2012-11-20 220 views
2

我有一個表的SQL服務器上的兩個不同的選擇語句返回的重疊部分的標準SQL語句從兩個SELECT語句

我想什麼是同時匹配選擇語句,而不僅僅是一個結果。

我試過嵌套的SELECT語句,但我沒有太多的運氣。

我的表看起來像遵循

ID Name Field2 Field3 

1  John  100  NULL 
2  Dave  150  NULL 
3  Tim  NULL  150 
4  Dave  NULL  150 

我的SELECT語句如下:

SELECT * FROM table WHERE Field2 = 150 
SELECT * FROM table WHERE Field3 = 150 

但我只想回到「戴維」,因爲只有他出現在結果都SELECT語句。

我該如何做到這一點?

+0

你究竟想要選擇什麼? Recrods 2和4?或者只是其中一個記錄?或者只是名字? – LittleBobbyTables

+0

只是名稱多數民衆贊成 – PJW

回答

7

使用INTERSECT

SELECT Name FROM table WHERE Field2 = 150 
INTERSECT 
SELECT Name FROM table WHERE Field3 = 150 
+0

優秀 - 只要你知道如何呃 - 謝謝。 – PJW

+0

@PJW不客氣......來自同一鏈接的「EXCEPT」非常方便... –

0

您可以使用EXISTS

SELECT t1.name 
FROM table1 t1 
WHERE (Field2 = 150) 
    and exists (select * 
       from table1 t2 
       where Field3 = 150 
       and t1.name = t2.name); 

SQL Fiddle with Demo

0

或只是inner join

select name from (
(SELECT name FROM table WHERE Field2 = 150) f2 inner join 
(SELECT name FROM table WHERE Field3 = 150) f3 on 
f2.name = f3.name