簡體   English   中英

通過sem選擇兩個表之間不匹配的行

[英]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結果的輸出

| B |

  1. | cc |
  2. | ee |

您可以嘗試這樣的事情。

SELECT B
FROM Table2 b
WHERE NOT EXISTS (
    SELECT *
    FROM Table1 a
    WHERE a.A = b.B)

據我所知,您的表不起作用的原因是因為您獲得了table1和table2中所有的值。 您應該做的就像我上面所做的一樣。 獲取所有兩個表中的值,並檢查兩個表中的哪些值不在結果集中,這就是為什么我設置了子查詢的原因。 我對SQL有點生疏,所以請堅持我所說的。

您可以使用outer joinwhere子句來執行此操作。 在這種情況下,我認為是正確的外部聯接:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM