Sql 通过sem选择两个表之间不匹配的行
我有两张桌子,表一和表二。我想在表2中选择表1中未包含的不同行。以下是一个例子:Sql 通过sem选择两个表之间不匹配的行,sql,join,sql-server-2012,Sql,Join,Sql Server 2012,我有两张桌子,表一和表二。我想在表2中选择表1中未包含的不同行。以下是一个例子: Table1 | A | | sem| ------------------ 1. | aa | | 1 | --------------- 2. | bb | | 1 | ---------------- 3. | aa | | 2 | ----------------- 4. | cc | | 2 | ---------------
Table1
| A | | sem|
------------------
1. | aa | | 1 |
---------------
2. | bb | | 1 |
----------------
3. | aa | | 2 |
-----------------
4. | cc | | 2 |
---------------
Table2
| B |
------
1. | aa |
------
2. | aa |
------
3. | bb |
------
4. | cc |
------
5. | cc |
------
6. | ee |
------
7. | ee |
------
当sem=1时,我想要这两个表中不常见的行
喜欢
sem的输出=1
结果
|B|
您可以使用
外部联接
和where
子句来实现这一点。在这种情况下,右外连接,我认为:
SELECT cd.cGenotype
FROM dbo.TestResults tr right outer join
dbo.CombinedData cd
ON (tr.TestResult = cd.cGenotype)
where tr.testresult is null
GROUP BY cd.cGenotype
你可以试试这样的
SELECT B
FROM Table2 b
WHERE NOT EXISTS (
SELECT *
FROM Table1 a
WHERE a.A = b.B)
从我所能收集到的信息来看,你的不起作用的原因是因为你得到了表1和表2中的所有值。你应该做的和我上面做的一样。获取两个表中的所有值,并检查两个表中的哪些值不在结果集中,这就是我设置子查询的原因。我的SQL有点生疏了,所以请对我所说的话稍加保留。谢谢,这很有效。我期待着有一天我在t-sql和你一样优秀。
SELECT B
FROM Table2 b
WHERE NOT EXISTS (
SELECT *
FROM Table1 a
WHERE a.A = b.B)