2

我在 SQL 服务器上有一个表和两个具有不同 WHERE 条件的 Select 语句

我想要的是匹配两个 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 语句的结果中。

我如何实现这一目标?

4

3 回答 3

7

使用INTERSECT

SELECT Name FROM table WHERE Field2 = 150
INTERSECT
SELECT Name FROM table WHERE Field3 = 150
于 2012-11-20T18:22:03.017 回答
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

于 2012-11-20T18:25:45.007 回答
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 
于 2012-11-20T19:33:54.483 回答