从 SELECT 语句中排除列

Excluding Columns From SELECT Statement

你好,我想知道如何从 SELECT 语句中排除列, 我加入了 2 个表。

第一个Table:

 |--ID--|--Name--|--Date 1--|--Date 2--|

第二个Table:

|--ID--|--Tax--|--Total--|

输出:

  |--ID--|--Name--|--Date 1--|--Date 2--|--ID--|--Tax--|--Total--|

这是我想要的输出:

   |--Name--|--Tax--|--Total| 

这是我的代码:

Dim loadq As String =
            "SELECT HelperEmpEarns.*, HelperEmpDed.*" & _
            "FROM (HelperEmpEarns RIGHT JOIN HelperEmpDed ON HelperEmpEarns.EmpPID = HelperEmpDed.EmpPID) " & _
            "WHERE [Position] LIKE '%Helper%' AND [Pday1] >= # " & MetroDateTime1.Value.ToShortDateString & "# AND [Pday2] <= # " & MetroDateTime2.Value.ToShortDateString & "# AND HelperEmpEarns.EmpPID = HelperEmpDed.EmpPID"

只枚举你要显示的字段,不要放*,表示"all fields":

Dim loadq As String =
                "SELECT HelperEmpEarns.[Name], HelperEmpDed.Tax, HelperEmpDed.Total" & _
                "FROM (HelperEmpEarns RIGHT JOIN HelperEmpDed ON HelperEmpEarns.EmpPID = HelperEmpDed.EmpPID) " & _
                "WHERE [Position] LIKE '%Helper%' AND [Pday1] >= # " & MetroDateTime1.Value.ToShortDateString & "# AND [Pday2] <= # " & MetroDateTime2.Value.ToShortDateString & "# AND HelperEmpEarns.EmpPID = HelperEmpDed.EmpPID"

我将 [Name] 放在方括号中,以帮助将其识别为字段名称而不是 SQL 关键字。

select只需要列而不是所有(*)

SELECT HelperEmpEarns.Name, HelperEmpDed.Tax,HelperEmpDed.Total 
from..

使用 Select HelperEmpEarns.* 将 return 来自 table 的所有列名称。这通常不被认为是好的开发实践。

一种更受欢迎的方法是只取回您需要的列Select HelperEmpEarns.Col1Name, HelperEmpEarns.Col2Name...

这有几个优点:

  1. 如果有人更改数据库设计并添加或删除列,除非他们删除您需要的列之一,否则不会影响您的查询。
  2. 与 return 所有列相比,您的 return 数据集可能小得多。

所以,改成这样:

Dim loadq As String =
            "SELECT HelperEmpEarns.Col1Name, HelperEmpEarns.Col2Name, HelperEmpEarns.Col3Name, " & _
            "HelperEmpDed.Col1Name, HelperEmpDed.Col2Name" & _
            "FROM (HelperEmpEarns RIGHT JOIN HelperEmpDed ON HelperEmpEarns.EmpPID = HelperEmpDed.EmpPID) " & _
            "WHERE [Position] LIKE '%Helper%' AND [Pday1] >= # " & MetroDateTime1.Value.ToShortDateString & "# AND [Pday2] <= # " & MetroDateTime2.Value.ToShortDateString & "# AND HelperEmpEarns.EmpPID = HelperEmpDed.EmpPID"

您可以使 select 语句更具体并去掉通配符 *

SELECT firstTable.Name, SecondTable.Tax, SecondTable.Total
    ...

查看 w3schools SQL SELECT Statement 了解有关 SELECT 语句的更多信息。

SELECT firsttable.name,secondtable.tax,secondtable.total 
FROM firsttable 
JOIN secondtable using(ID);