2

SQL サーバーにテーブルがあり、WHERE 条件が異なる 2 つの Select ステートメントがあります。

私が欲しいのは、1 つだけでなく、両方の 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 ステートメントの結果に表示されるのは彼だけなので、'Dave' だけを返したいと思います。

どうすればこれを達成できますか?

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 FiddlewithDemoを参照してください

于 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 に答える