我有两个表,Table1和Table2。我想在Table2中选择Table1中未包含的不同行。这是一个例子:
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 结果
答案 0 :(得分:8)
你可以尝试这样的事情。
SELECT B
FROM Table2 b
WHERE NOT EXISTS (
SELECT *
FROM Table1 a
WHERE a.A = b.B)
从我可以收集的内容来看,你的工作不起作用的原因是因为你得到了table1和table2中所有的值。你应该做的就像我上面所做的那样。获取两个表中的所有值并检查两个表中的哪些值不在结果集中,这就是我设置子查询的原因。我的SQL上有点生疏,所以拿着我所说的,加盐。
答案 1 :(得分:6)
您可以使用outer join
和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
答案 2 :(得分:1)
SELECT DISTINCT b.cGenotype
FROM dbo.CombinedData b
WHERE NOT EXISTS (SELECT *
FROM dbo.TestResults a
WHERE a.TestResult = b.cGenotype)