MySQL'WHERE'子句排除了子查询中的结果

Pro*_*ger 1 mysql subquery

我有以下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')
Run Code Online (Sandbox Code Playgroud)

org 7中有3名成员:

     - member_ID 1
     - member_ID 4
     - member_ID 6
Run Code Online (Sandbox Code Playgroud)

在子查询中,会导致成员ID 1和4.我正在尝试编写1个查询,该查询只返回成员ID#6.当我运行上面的查询时,我没有得到任何结果.当我分开它们时,我得到了预期的结果.请帮忙.

谢谢!

rua*_*akh 6

AND NOT EXISTS (select ...)用于确保子查询不返回任何行.通常只有在子查询相关时才会有意义(即,如果它引用外部查询中的值),否则它将对每个结果行都为真(并且实际上不会影响查询),或者为false每个结果行(并且将导致查询根本不返回任何结果,如您的情况).我你想要的是:

    AND members.member_ID NOT IN (select shares.member_ID from shares where shares.asset_ID = '224')
Run Code Online (Sandbox Code Playgroud)