gpt4 book ai didi

mysql - 如果在翻译表中找不到记录,则选择列

转载 作者:行者123 更新时间:2023-11-29 02:18:35 25 4
gpt4 key购买 nike

我有以下两个表:
特性

╔════╤═══════╗
║ id │ value ║
╠════╪═══════╣
║ 1 │ A ║
╟────┼───────╢
║ 2 │ B ║
╟────┼───────╢
║ 3 │ ║
╟────┼───────╢
║ 4 │ X ║
╚════╧═══════╝

characteristics_translations

╔════╤════════════════════╤══════════╤══════════════╗
║ id │ characteristics_id │ language │ title ║
╠════╪════════════════════╪══════════╪══════════════╣
║ 1 │ 3 │ en │ EN - Cookies ║
╟────┼────────────────────┼──────────┼──────────────╢
║ 2 │ 3 │ fr │ FR - Cookies ║
╟────┼────────────────────┼──────────┼──────────────╢
║ 3 │ 3 │ de │ DE - Cookies ║
╟────┼────────────────────┼──────────┼──────────────╢
║ 4 │ 4 │ en │ EN - Apples ║
╟────┼────────────────────┼──────────┼──────────────╢
║ 5 │ 4 │ fr │ FR - Apples ║
╚════╧════════════════════╧══════════╧══════════════╝

我正在尝试在 MySQL 中创建一个查询,其中我选择所有 characteristics 并在 characteristics_translations 左侧加入,以防有定义的 title 在翻译表中。如果不是,它应该从 characteristics 中选择列 value

这是我到目前为止尝试过的:

SELECT c.id, 
[c.value OR ct.title]
FROM `characteristics` c
LEFT JOIN `characteristics_translations` ct
ON c.id = ct.characteristics_id
WHERE ct.language = 'de'
OR ct.language = NULL;

输出应该是这样的:

{
"0":{
id: "1",
title: "A"
},
"1":{
id: "2",
title: "B"
},
"2":{
id: "3",
title: "DE - Cookies"
},
"3":{
id: "4",
title: "X"
},
}

最终解决方案

SELECT c.id, COALESCE(ct.title, c.value) title 
FROM `characteristics` c
LEFT JOIN `characteristics_translations` ct
ON c.id = ct.characteristics_id
AND ct.language = 'de'

最佳答案

使用 coalesce() 从参数列表中获取第一个非空值:

SELECT c.id, 
coalesce(ct.title, c.value) as title
FROM `characteristics` c
LEFT JOIN `characteristics_translations` ct
ON c.id = ct.characteristics_id
WHERE ct.language = 'de'
OR ct.language = NULL;

关于mysql - 如果在翻译表中找不到记录,则选择列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35483499/

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