2012-12-17 40 views

回答

1

如果我找到了你,這就是你想要的。

SELECT 
    t1.name 
FROM 
    Table1 t1 
WHERE 
    t1.name 
NOT IN 
    (
     SELECT t2.name 
     FROM Table2 t2 
     JOIN t1 
     ON t2.name = t1.name 
    ) 
+0

你能否給我一張你的表格,並指定你想要不平等的領域? – Theolodis

+0

哦,等等,我認爲它現在可能正在工作,我試着用「IN」而不是「NOT IN」 – user1876234

+0

但是如果你拿到IN,你實際上得到了重複。 – Theolodis

0

您需要指定一列(或多列),用於「匹配」行,以確定它們是否爲「重複項」。

我打算假設(缺少任何模式信息),列名是id

「抗加盟」模式通常是最好的執行選項:(性能依賴於一大堆的因素)

SELECT a.id 
    FROM table1 a 
    LEFT 
    JOIN table2 b 
    ON a.id = b.id 
WHERE b.id IS NULL 

你的其他選擇是使用NOT EXISTS謂:

SELECT a.id 
    FROM table1 a 
WHERE NOT EXISTS 
     (SELECT 1 
      FROM table2 b 
      WHERE b.id = a.id 
     ) 

或者,使用NOT IN謂詞:

SELECT a.id 
    FROM table1 a 
WHERE a.id NOT IN 
     (SELECT b.id 
      FROM table2 b 
      WHERE b.id IS NOT NULL 
     ) 

生成的執行計劃和每個這些語句的性能可能會有所不同。對於大集合,「反連接」模式(第一個查詢)通常表現最佳。