我正在尝试编写一个查询,其中我将第一个子查询的剩余部分取出,并将第二个的所有部分取出,所以基本上(从下面的示例中)说Q1 - Q2 = 121 - 7 = 114(ParticipantID的那个是在Q1而不是在Q2)
select ParticipantID
from
(
Query 1 results (121 in my case)
) AS Q1
Join
(
Query 2 results (7)
) AS Q2
答案 0 :(得分:0)
使用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;
答案 1 :(得分:0)
Select Q1.ParticipantID from (query1) as Q1 where Q1.ParticipantID NOT IN (select participantID from query2)
答案 2 :(得分:0)
您可以使用NOT IN
:
SELECT * FROM Q1
WHERE id NOT IN (SELECT ParticipantID FROM Q2)
或者使用EXCEPT
(或MINUS
,具体取决于数据库引擎):
SELECT ParticipantID FROM Q1
EXCEPT
SELECT ParticipantID FROM Q2
答案 3 :(得分:0)
如果您是usig Sql server:
您可以使用:
Except: EXCEPT返回左查询中的任何不同值,这些值在右侧查询中也找不到。
语法
{ <query_specification> | ( <query_expression> ) }
{ EXCEPT | INTERSECT }
{ <query_specification> | ( <query_expression> ) }
例如:
SELECT ParticipantID
FROM Q1
EXCEPT
SELECT ParticipantID
FROM Q2;