Bud*_*Joe 10 sql t-sql sql-server-2005
如果UNION ALL
是一个除了在T-SQL.减法的等价物是什么?
例如,如果我有一个表PEOPLE
和一个表EMPLOYEES
.而且我知道,如果我删除EMPLOYEES
记录,PEOPLE
我将离开我的公司CONTRACTORS
.
有没有办法做到这一点类似UNION ALL
?我不需要指定任何字段名称的地方?我问的原因是这只是一个假设的例子.我需要对很多不同的表做几次这样的事情.假设的模式EMPLOYEES
和PEOPLE
是相同的.
Eri*_*ess 12
您可以使用EXCEPT运算符从另一个运算符中减去一个集合.这是使用EMPLOYEES和PEOPLE临时表的代码示例.据我所知,您需要在EXCEPT运算符中使用字段名称.
CREATE TABLE #PEOPLE
(ID INTEGER,
Name NVARCHAR(50))
CREATE TABLE #EMPLOYEE
(ID INTEGER,
Name NVARCHAR(50))
GO
INSERT #PEOPLE VALUES (1, 'Bob')
INSERT #PEOPLE VALUES (2, 'Steve')
INSERT #PEOPLE VALUES (3, 'Jim')
INSERT #EMPLOYEE VALUES (1, 'Bob')
GO
SELECT ID, Name
FROM #PEOPLE
EXCEPT
SELECT ID, Name
FROM #EMPLOYEE
GO
Run Code Online (Sandbox Code Playgroud)
最终查询将返回PEOPLE表中的两行,这两行在EMPLOYEE表中不存在.
Tom*_*m H 11
SELECT
P.*
FROM
People P
LEFT OUTER JOIN Employees E ON
E.ID = P.ID -- Or whatever your PK-FK relationship is
WHERE
E.ID IS NULL
Run Code Online (Sandbox Code Playgroud)
对于SQL Server,这可能是您可以执行它的最高性能方式.