[英]Select rows with no match between two tables by sem
我有兩個表,表1和表2。 我想選擇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結果的輸出
您可以嘗試這樣的事情。
SELECT B
FROM Table2 b
WHERE NOT EXISTS (
SELECT *
FROM Table1 a
WHERE a.A = b.B)
據我所知,您的表不起作用的原因是因為您獲得了table1和table2中所有的值。 您應該做的就像我上面所做的一樣。 獲取所有兩個表中的值,並檢查兩個表中的哪些值不在結果集中,這就是為什么我設置了子查詢的原因。 我對SQL有點生疏,所以請堅持我所說的。
您可以使用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
SELECT DISTINCT b.cGenotype
FROM dbo.CombinedData b
WHERE NOT EXISTS (SELECT *
FROM dbo.TestResults a
WHERE a.TestResult = b.cGenotype)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.