子表包含零行时的SQL SELECT

QFD*_*Dev 2 sql sql-server select sql-server-2008-r2

假设我有两张桌子:

Table A
employeeID (int)
employeeName (varchar)
employeeDOB (varchar)

Table B
employeeID (int)
holidaysUsed (int)
Run Code Online (Sandbox Code Playgroud)

表B与表A的关系employeeID.表B可以将零行或多行链接到单个employeeID.我想在表A上执行SELECT,但是当表B中没有相应的记录时,只检索表A中的行.

我对此有一些想法,但我想确保我使用最佳查询.任何帮助将非常感激.

附加信息

数据库平台:SQL Server 2008 R2

典型的返回数据集大小1000记录平均值.

小智 9

SELECT * FROM A WHERE employeeID NOT IN (SELECT employeeID FROM B);

  • 另一种方法是在b.employeeID = a.employeeID中从左连接b中选择a.*,其中b.employeeID为null.顺便说一下可能会更快. (4认同)