用于从两个Select Statements返回重叠的SQL语句

时间:2012-11-20 18:20:40

标签: sql sql-server tsql

我有一个关于SQL服务器的表和两个具有不同WHERE标准的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

但我想只返回'Dave',因为只有他出现在两个SELECT语句的结果中。

我如何实现这一目标?

3 个答案:

答案 0 :(得分:7)

使用INTERSECT

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

答案 1 :(得分: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

答案 2 :(得分: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