php - MySQL多语言选择语言行的主语言行为空

标签 php sql database mysqli multilingual

主表:

id | main1

表 MAIN_LNG:

id | id_main | lng | desc

查询:

SELECT MAIN.*, MAIN_LNG.desc
FROM MAIN
JOIN MAIN_LNG
  ON MAIN.id = MAIN_LNG.id_main
  AND MAIN_LNG.lng = IFNULL('de', 'en')

现在我想选择带有德语描述的 de 行 (MAIN_LNG.desc),但如果此描述为 NULL 则自动选择作为主要语言的 en

如何使用纯 SQL 来实现?

最佳答案

COALESCE()函数返回其参数中的第一个非 NULL 值。我们所要做的就是在这里给“de”一个优先权。

SELECT MAIN.*, COALESCE(de.desc, en.desc) AS desc
FROM MAIN
LEFT JOIN MAIN_LNG AS de ON MAIN.id = MAIN_LNG.id_main
  AND MAIN_LNG.lng = 'de'
LEFT JOIN MAIN_LNG AS en ON MAIN.id = MAIN_LNG.id_main
  AND MAIN_LNG.lng = 'en'     

(自己没测试过。)

关于php - MySQL多语言选择语言行的主语言行为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35497293/

相关文章:

sql - 排序结果与 mysql 中的内连接和左连接不同

php - Wordpress - 仅在特定页面上显示 metabox

sql - 使用 SQL 查询识别趋势

Php7.1 fatal error : [] operator not supported for strings

mysql - 使用引用原始表的子查询删除

sql - 从 VBA 中的 Access 表中删除和添加 ID 键索引

php - 使用 PHP 从 MySQL 数据库获取值(value)

mysql - 在触发器中打印声明的变量

PHP 表单提交 UTF-8

php - 在 MySQL 查询中添加字段