繁体   English   中英

排除值SQL

[英]Excluding values SQL

SELECT m.name, f.name
FROM   delivered d
JOIN   members m ON d.member_id = m.id
JOIN   members f ON d.friend_member_id = f.id
WHERE  m.shipping_method = f.shipping_method AND
       m.zip_code = f.zip_code

我需要将其连接到称为方法的第三张表的帮助。 上面的friend_member_id将加入此表中的member_id。 问题是方法表中的friend_member_id可能有多个记录,我需要排除类型至少为“ express”的至少有一条记录的friend_member_id。 基本上,如果是这种情况,则friend_member_id在方法表中具有类型='express'的任何记录,我不想返回该名称。

代替JOIN ,使用NOT EXISTS

SELECT m.name, f.name
FROM delivered d JOIN
     members m
     ON d.member_id = m.id JOIN
     members f
     ON d.friend_member_id = f.id
WHERE  m.shipping_method = f.shipping_method AND
       m.zip_code = f.zip_code AND
       NOT EXISTS (SELECT 1
                   FROM method mm
                   WHERE mm.member_id = d.friend_member_id AND
                         mm.type = 'express'
                  );

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM