最初のサブクエリの残りを取り出し、2番目のサブクエリのすべてを取り出すクエリを作成しようとしているので、基本的に(以下の例から)Q1-Q2 = 121-7 = 114(Q1にある参加者ID) Q2ではありません)
select ParticipantID
from
(
Query 1 results (121 in my case)
) AS Q1
Join
(
Query 2 results (7)
) AS Q2
Select Q1.ParticipantID from (query1) as Q1 where Q1.ParticipantID NOT IN (select participantID from query2)
あなたが使用することができますNOT IN
:
SELECT * FROM Q1
WHERE id NOT IN (SELECT ParticipantID FROM Q2)
または使用EXCEPT
(またはMINUS
、DBエンジンによっては):
SELECT ParticipantID FROM Q1
EXCEPT
SELECT ParticipantID FROM Q2
NOT IN
次の述語を使用します。
select ParticipantID
from
(
-- Query 1 results
) AS Q1
WHERE ParticipantID NOT IN(
-- SELECT ParticipantID
-- FROM Query 2 results
)
または、LEFT JOIN
SELECT ...
FROM
(
--- Query 1 results
) AS Q1
LEFT JOIN
(
-- Query 2
) AS Q2 ON ... -- JOIN condition here
WHERE Q2.ParticipantID IS NULL;
SQL サーバーを使用している場合:
以下を使用できます。
例外: EXCEPT は、右側のクエリにも見つからない、左側のクエリからの個別の値を返します。
構文
{ <query_specification> | ( <query_expression> ) }
{ EXCEPT | INTERSECT }
{ <query_specification> | ( <query_expression> ) }
例えば:
SELECT ParticipantID
FROM Q1
EXCEPT
SELECT ParticipantID
FROM Q2;