首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Left join where left table column =column或null

Left join where left table column =column或null
EN

Stack Overflow用户
提问于 2019-09-05 09:17:55
回答 1查看 40关注 0票数 0

我需要连接一个左表和右表,并保留所有左表行,即使右表没有匹配。..。标准的左连接。

仅包括符合条件的左侧表格行。

仅包括符合条件的右侧表行。如果没有找到,则在联接中使用null。

如果不为null,则按右表中的列排序,但如果为null,则不要松开条目。

在psudo sql中,我希望

代码语言:javascript
复制
(
    select
        *
    from
        work_item
    where
        work_item.id_work_item_queue = 5
) as t1

(
    select
        *
    from
        ai_guess
    where
        ai_guess.AI_Guess_Date = '2019:08:09:19:49:02'
) as t2

select
    t1.*,
    t2.*
from 
    t1
    left join t2 on t1.id_word_crop = t2.id_word_crop
ORDER BY
    ai_guess.text

我得出的解决方案是

代码语言:javascript
复制
SELECT 
    work_item.id_work_item,
    work_item.id_word_crop,
    ai_guess.text

FROM
    work_item
    LEFT JOIN ai_guess ON
    work_item.id_word_crop = ai_guess.id_word_crop

WHERE
    work_item.id_work_item_queue = 5
    AND
    ai_guess.AI_Guess_Date = '2019:08:09:19:49:02'

ORDER BY
    ai_guess.text

这将生成

代码语言:javascript
复制
id_work_item, id_word_crop, text
'4', '224343', 'eie'
'3', '224342', 'geüichrt'
'2', '224341', 'rschaunig'
'6', '224345', 'VSnge'

但它丢失了,左表中的条目

代码语言:javascript
复制
id_work_item, id_word_crop
'5', '224344'

左表包含

代码语言:javascript
复制
SELECT
    id_work_item,
    id_word_crop
FROM
    work_item
where
    id_work_item_queue = 5
代码语言:javascript
复制
    id_work_item, id_word_crop
    '2', '224341'
    '3', '224342'
    '4', '224343'
    '5', '224344'
    '6', '224345'

右边的表没有匹配项,所以左边的条目被删除了,但我想保留左边的条目。

代码语言:javascript
复制
SELECT
    *
FROM
    ai_guess
where
    id_word_crop = 224344

返回null

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-05 09:27:09

ai_guess表上的条件从WHERE移到ON子句:

代码语言:javascript
复制
SELECT
    work_item.id_work_item,
    work_item.id_word_crop,
    ai_guess.text
FROM work_item
LEFT JOIN ai_guess
    ON work_item.id_word_crop = ai_guess.id_word_crop AND
       ai_guess.AI_Guess_Date = '2019:08:09:19:49:02'
WHERE
    work_item.id_work_item_queue = 5
ORDER BY
    ai_guess.text;

现在发生的情况是,连接生成了您想要的中间结果,但是WHERE子句过滤掉了缺少的记录,因为它的猜测日期不匹配。通过将此限制放在联接条件中,可以防止过早删除该记录。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57797287

复制
相关文章

相似问题

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