我有两张桌子,
首先是 master_location:
此表由列 (id, location) 组成
- 第 1 行,id = 1,位置 = X
- 第 2 行,id = 2,位置 = Y
- 第 3 行,id = 3,位置 = Z
第二个是 user_access
列(电子邮件,ID)
第 1 行 => me@localhost.host , 1
我想显示不存在电子邮件“me@localhost”的主位置的所有其他位置。
我已经设置了sql:
SELECT ml.idms_location, ml.location
FROM ms_location ml JOIN user_access tu
WHERE ml.id= tu.id
AND !(tu.email = 'me@localhost.host');
但它仅从表 user_access 中显示,其中电子邮件不是 me@localhost.host
有没有像 SELECT ALL EXCEPT 这样的 sql 语法?
谢谢
更新
表 1:master_location
表 2:tm_access
我已经按照建议编写了语法结果:
SELECT DISTINCT ml.idms_location,ml.location
FROM ms_location ml
LEFT OUTER JOIN tm_userlocation tu
ON ml.idms_location = tu.idms_location
WHERE COALESCE(tu.email,'john@mscid.com') = 'john@mscid.com';
结果
使用此 SQL 语法:
SELECT ms.idms_location, ms.location
FROM ms_location AS ms LEFT JOIN tm_userlocation AS tu
ON ms.idms_location = tu.idms_location
WHERE tu.email !='john@mscid.com' OR tu.email IS NULL;
我执行的结果只是缺少第一个 ID,没有。3和没有。5也应该删除
截屏: