我有以下SQL查询:
SELECT members.member_ID, members.nick_name
FROM orgs
INNER JOIN assets ON assets.org_ID = orgs.org_ID
INNER JOIN orgs_to_members ON orgs_to_members.org_ID = orgs.org_ID
INNER JOIN members ON members.member_ID = orgs_to_members.member_ID
where orgs.org_ID = '7'
AND NOT EXISTS (select shares.member_ID from shares where shares.asset_ID = '224')
org 7中有3名成员:
- member_ID 1
- member_ID 4
- member_ID 6
在子查询中,会员ID为1和4。我正在尝试编写1个查询,该查询只返回成员ID#6。当我运行上面的查询时,我没有得到任何结果。当我分开它们时,我得到了预期的结果。请帮忙。
谢谢!
答案 0 :(得分:6)
AND NOT EXISTS (select ...)
用于确保子查询不返回任何行。通常只有在子查询相关时才会有意义(即,如果它引用外部查询中的值),否则它将对每个结果行都为真(并且实际上不会影响查询),或者为false每个结果行(并且将导致查询根本不返回任何结果,如您的情况)。我认为你想要的是:
AND members.member_ID NOT IN (select shares.member_ID from shares where shares.asset_ID = '224')