2011-01-06 75 views
0

我有一臺X和Y簡單凡在SQL

表X

a 
b 
c 
d 

數據表Y

a 1 1 
a 32 5 
b 1 1 
b 4 5 
c 5 65 

我想在輸出c和d,因爲他們沒有在表Y值爲1的記錄1

我該如何得到它?

回答

3

你不給任何列名,所以我做了一些!

SELECT col1 
FROM tablex 
EXCEPT 
select col1 
FROM tabley 
WHERE col2=1 and col3=1 

如果過於簡化的例子,確實需要額外的列從tablex使用NOT EXISTS

SELECT tablex.* 
FROM tablex 
WHERE NOT EXISTS (SELECT * 
        FROM tabley 
        WHERE col2 = 1 
          AND col3 = 1 
          AND tablex.col1 = tabley.col1) 
+0

使用`EXISTS`會引起掃描tablex中的每個記錄。派生表應該更快。 – Matthew 2011-01-06 23:16:48

1

我想我明白:

SELECT X.column FROM X 
WHERE X.column NOT IN 
(SELECT Y.column FROM Y WHERE Y.column2=1 AND Y.column3=1) 
1
SELECT col1 
FROM TableX 
WHERE col1 
NOT IN (select col1 
FROM TableY 
WHERE col2=1 and col3=1)