首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mySQL左连接

问mySQL左连接
EN

Stack Overflow用户
提问于 2011-08-16 02:22:01
回答 2查看 189关注 0票数 1

我有两张桌子T1L和T2U。对于与left join匹配的记录,如果为Deleted!=0,则我不需要来自这两个表的记录。

代码语言:javascript
复制
SELECT
    IF(U.Column1 IS NULL, L.id, -U.id) AS id,
    IF(U.Column1 IS NULL, L.Column1, U.Column1) AS Column1,
    IF(U.Column1 IS NULL, L.Column2, U.Column2) AS Column2,
    IF(U.Column1 IS NULL, L.Deleted, U.Deleted) AS Deleted
FROM
    T1 L
LEFT JOIN T2 U
    ON L.Column1 = U.Column1 AND L.Column2=U.Column2 AND U.Deleted=0

如果是Deleted!=0,目前它会给我TI的记录。我根本不想要TI或T2的记录。

我如何修改查询来实现这一点呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-16 02:25:05

将其移到WHERE子句中,并添加对NULL的额外检查。

代码语言:javascript
复制
SELECT
    IF(U.Column1 IS NULL, L.id, -U.id) AS id,
    IF(U.Column1 IS NULL, L.Column1, U.Column1) AS Column1,
    IF(U.Column1 IS NULL, L.Column2, U.Column2) AS Column2,
    IF(U.Column1 IS NULL, L.Deleted, U.Deleted) AS Deleted
FROM
    T1 L
LEFT JOIN T2 U
    ON L.Column1 = U.Column1 AND L.Column2=U.Column2 
WHERE
    U.Deleted=0
    OR U.Deleted IS NULL
票数 2
EN

Stack Overflow用户

发布于 2011-08-16 02:26:35

如果我正确地理解了您要做的事情,您应该删除join add A WHERE子句中的"AND U.Deleted=0“:

代码语言:javascript
复制
WHERE U.Deleted=0 OR U.Column1 IS NULL
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7068898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档