2014-04-08 98 views
0

我遇到了返回數據記錄的問題。我首先想要查找記錄,其中某個值在存在「0000」的列中進行2個表的連接。以下是我的T-SQL;SQL加入2個表,返回只有1個值存在且沒有其他值的記錄

SELECT ColumnA, ColumnB, ColumnC 
      FROM Table1, Table2 
      WHERE Table1.ColumnB. = Table2.ColumnB 
      and ColumnC='0000' 

這將返回所需的數據記錄,其中'0000'至少在所有返回的記錄中存在一次。

我的問題是,我該怎麼做一樣的,只是返回重複的記錄,其中「0000」是存在的唯一值(一個或多次),並沒有其他的價值存在返回的數據記錄

非常感謝!

回答

1
SELECT distinct ColumnA, ColumnB 
      FROM Table1, Table2 
      WHERE Table1.ColumnB = Table2.ColumnB 
      and ColumnC = '0000' 
except 
SELECT distinct ColumnA, ColumnB 
      FROM Table1, Table2 
      WHERE Table1.ColumnB = Table2.ColumnB 
      and ColumnC <> '0000' 

,如果你想使用一個連接
猜測ColumnC在表2

SELECT distinct Table1.ColumnA, Table1.ColumnB, Table2.ColumnC 
      FROM Table1 
      JOIN Table2 
      on Table1.ColumnB = Table2.ColumnB 
      and Table2.ColumnC = '0000' 
      left join Table2 exclude 
      on Table1.ColumnB = exclude.ColumnB 
      and exclude.ColumnC <> '0000' 
      where exclude.ColumnB is null 

這可能是表現最好的

SELECT distinct Table1.ColumnA, Table1.ColumnB, Table2.ColumnC 
      FROM Table1 
      JOIN Table2 
      on Table1.ColumnB = Table2.ColumnB 
      and Table2.ColumnC = '0000' 
      and not exists (select * from table2 exclude 
          where exclude.ColumnB = Table1.ColumnB 
           and exclude.ColumnC <> '0000') 
+0

你打算給'NOT IN'和'NOT EXISTS'解決方案嗎? –

+0

@ConradFrix我想到了NOT EXISTS。這可能是表現最好的。我不確定您是否可以在不加入排除內容的情況下離開? – Paparazzi

+0

謝謝,Blam!僅供參考,第一個查詢似乎並沒有排除在哪裏t2.columnc可以是除'0000'以外的其他東西我有一對多的記錄,我可能有'0000'作爲匹配返回記錄的值,但是相同的相關父記錄不能有「0000」以外的任何值被返回並計數。第一個查詢返回96772個記錄另外兩個查詢相互匹配相同的記錄數(57263),也與Conrad Frix提供的查詢匹配。非常感謝兩位如此慷慨地提供解決方案!我是否可以信任一個或兩個人的答案? – rogabone

1

下面是一個使用ALL關鍵字

的解決方案
SELECT DISTINCT 
     columna, 
     columnb, 
     columnc 
FROM table1 t1 
     INNER JOIN table2 t2 
       ON table1.columnb = table2.columnb 
WHERE t2.columnc = '0000' 
     AND t2.columnc = ALL (SELECT columnc 
          FROM table2 t2Check 
          WHERE t2.columnb = t2Check.columb) 

這裏是一個Example,我只使用一個表,因爲問題中的連接並不重要。

+0

+1你能解釋爲什麼期望我的回答不會工作(根據OP) – Paparazzi

+0

我的猜測是OP在select子句中包含COLUMNC –

相關問題