我有两张桌子.我试图在一个表中找到基于两列中的值在第二个表中不存在的行.(我已将表简化为仅包含两列).两个表之间没有主键/外键.看起来很简单,但我现在有脑袋!
DDL:
CREATE TABLE [dbo].[Table_1](
[firstname] [nchar](10) NULL,
[lastname] [nchar](10) NULL
)
CREATE TABLE [dbo].[Table_2](
[firstname] [nchar](10) NULL,
[lastname] [nchar](10) NULL
)
Run Code Online (Sandbox Code Playgroud)
- 创建样本数据
INSERT INTO [dbo].[Table_1]([firstname], [lastname])
SELECT N'John ', N'Doe ' UNION ALL
SELECT N'John ', N'Smith '
INSERT INTO [dbo].[Table_2]([firstname], [lastname])
SELECT N'John ', N'Doe '
Run Code Online (Sandbox Code Playgroud)
- 我尝试失败了.我期待约翰史密斯回来
SELECT t.* FROM Table_1 AS t
WHERE NOT EXISTS
(SELECT t2.* FROM Table_2 AS t2
WHERE t.firstname <> t2.firstname
AND t.lastname <> t2.lastname)
SELECT * FROM Table_1 AS t
JOIN Table_2 AS t2
ON t.firstname <> t2.firstname
AND t.lastname <> t2.lastname
Run Code Online (Sandbox Code Playgroud)
这个怎么样:
SELECT *
FROM Table_1 AS t1
LEFT OUTER JOIN Table_2 AS t2
ON t1.firstname = t2.firstname
AND t1.lastname = t2.lastname
WHERE t2.firstname IS NULL AND t2.lastname IS NULL
Run Code Online (Sandbox Code Playgroud)
就我而言,我只得到约翰史密斯.
您基本上在公共字段的表之间执行外连接 - 在这两种情况下存在的那些行将具有两个t1和的值t2.
仅存在的那些行将t1不具有第二个表的任何值t2.
| 归档时间: |
|
| 查看次数: |
14621 次 |
| 最近记录: |