Mor*_*eus 4 sql t-sql sql-server sql-server-2012
我有表1:
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
Run Code Online (Sandbox Code Playgroud)
和一个Table2:
ID Program BestBefore
12345 ABC 2
12345 FGH 3
12346 ABC 1
Run Code Online (Sandbox Code Playgroud)
我想得到下表
Id Program Price Age
12345 CDE 10 1
12346 CDE 2 5
12367 CDE 10 6
Run Code Online (Sandbox Code Playgroud)
即从第一张表中获取ID + Program不在第二张表中的行。我正在使用MS SQL Server Express 2012,并且不想将任何列添加到原始数据库。是否可以不创建临时变量而做?
有几种方法可以使用,这是一种使用方法not exists
:
select *
from table1 t1
where not exists (
select 1
from table2 t2
where t1.id = t2.id and t1.program = t2.program
)
Run Code Online (Sandbox Code Playgroud)
一种可能的变体是使用LEFT JOIN
:
SELECT
Table1.*
FROM
Table1
LEFT JOIN Table2
ON Table1.ID = Table2.ID
AND Table1.Program = Table2.Program
WHERE
Table2.ID IS NULL
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2240 次 |
最近记录: |