gpt4 book ai didi

MySQL 带有额外子句的左连接返回不匹配的行

转载 作者:行者123 更新时间:2023-11-29 12:08:05 25 4
gpt4 key购买 nike

我有一个翻译表

id | language | tr_text | orig_id

orig_id 用于引用原始文本,例如

id | language | tr_text | orig_id
1 | EN | Hello | 1
2 | EN | Bye | 2
3 |DE | Hallo | 1

现在我正在尝试生成一个查询,为我提供所有原始术语和所有翻译术语,其中未输入翻译的情况下为空:

SELECT TransOrg.id, TransOrg.tr_text, TransOrg.tr_Language, TransLang.id, TransLang.tr_text, TransLang.tr_Language
FROM Translations AS TransOrg
LEFT JOIN Translations AS TransLang
ON TransOrg.id = TransLang.orig_id
AND TransOrg.Language = 'EN' AND TransLang.Language = 'DE'

这会返回我想要的内容以及 DE 翻译:

1 | Hello | EN | 3 | Hallo | DE
2 | Bye | EN | null | null | null
3 | Hallo | DE | null | null | null < why is this here?!

我以为

AND TransOrg.Language = 'EN' 

条件会阻止这个

最佳答案

您应该在 WHERE 子句中添加 TransOrg.Language = 'EN' 以防止其显示在结果集中。

SELECT TransOrg.id, TransOrg.tr_text, TransOrg.tr_Language, TransLang.id,
TransLang.tr_text, TransLang.tr_Language
FROM Translations AS TransOrg
LEFT JOIN Translations AS TransLang
ON (TransOrg.id = TransLang.orig_id AND TransLang.Language = 'DE')
WHERE TransOrg.Language = 'EN';

关于MySQL 带有额外子句的左连接返回不匹配的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31132124/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com