我有一个关于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语句的结果中。
我如何实现这一目标?
答案 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);
答案 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