我有Table1:
Id Program Price Age
12345 ABC 10 1
12345 CDE 23 3
12345 FGH 43 2
12346 ABC 5 4
12346 CDE 2 5
12367 CDE 10 6
和表2:
ID Program BestBefore
12345 ABC 2
12345 FGH 3
12346 ABC 1
我想获得以下表格,
Id Program Price Age
12345 CDE 10 1
12346 CDE 2 5
12367 CDE 10 6
从第一个表中获取ID + Program不在第二个表中的行。我正在使用MS SQL Server Express 2012,我不想在原始数据库中添加任何列。是否可以不创建临时变量?
答案 0 :(得分:5)
有几种方法可以执行此操作,其中一种方法是使用not exists
:
select *
from table1 t1
where not exists (
select 1
from table2 t2
where t1.id = t2.id and t1.program = t2.program
)
答案 1 :(得分:1)
一种可能的变体是使用LEFT JOIN
:
SELECT
Table1.*
FROM
Table1
LEFT JOIN Table2
ON Table1.ID = Table2.ID
AND Table1.Program = Table2.Program
WHERE
Table2.ID IS NULL