gpt4 book ai didi

sql - 在列中的任何行等于1的情况下选择行,如果不相等,则列等于2,但不能同时包含两者

转载 作者:行者123 更新时间:2023-12-03 18:49:36 24 4
gpt4 key购买 nike

我有一个文本翻译表,例如:

表:待办事项

day | text_id
-------------
0 | 1
1 | 2
1 | 1


表:翻译

lang | text_id | text
---------------------
deu | 1 | Laufen
eng | 1 | Running
eng | 2 | Swimming


现在,我想用德语(deu)查找待办事项。我的问题是,我没有text_id 2的翻译(例如)德语。

我的默认查询是:

SELECT todos.day, translations.text
INNER Join translations
ON todos.text_id = translations.text_id
WHERE translations.locale = 'deu';


我会得到:

day | text
--------------
0 | Laufen
1 | Laufen


但是我想要:

day | text
--------------
0 | Laufen
1 | Swimming
1 | Laufen


如何获得一些缺失的行?首先,我应该使用以下命令获取所有需要的行:

SELECT todos.day, translations.text
INNER Join translations
ON todos.text_id = translations.text_id
WHERE translations.locale = 'deu' or translations.locale = 'eng';


然后删除所有重复的'eng',但是-如何?

抱歉,这个可怕的标题,我不知道如何正确地描述它...

最佳答案

您需要left join将所有记录保留在第一个表中。然后,您需要两次以获取默认英语记录:

SELECT td.day, coalesce(tdeu.text, teng.text) as text
FROM todos td left join
translations tdeu
ON td.text_id = tdeu.text_id and tdeu.locale = 'deu' left join
translations teng
ON td.text_id = teng.text_id and teng.locale = 'eng';

关于sql - 在列中的任何行等于1的情况下选择行,如果不相等,则列等于2,但不能同时包含两者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30824614/

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