我有一个 mysql 表,其中包含带有 ID、语言和文本的条目。总是有一个 ID-语言对,但可以有更多 ID,因此如下:
id | language | translation
---+----------+------------
0 | en | Submit
0 | cs | Odeslat
0 | fr | Démarrer
1 | fr | Jour
1 | en | Day
2 | fr | Lundi
2 | cs | Pondělí
我不想按id
选择翻译
并对结果进行排序:
语言
= 用户定义的语言语言
= 'en'
这样,如果有一行包含用户语言,它将首先返回(并且只有一个,因为我使用LIMIT
)。如果不存在,则将返回英文行(如果存在)。否则没关系。
这是我尝试过的:
SELECT translation FROM `entries` WHERE id=1 ORDER BY language='cs' DESC, language='en' DESC LIMIT 1
我在排序中使用了 DESC
,因为我假设 language='cs'
对于所需的行返回 1,对于不需要的行返回 0。
最佳答案
尝试 CASE 表达式
SELECT *
FROM `entries`
WHERE id = 1
ORDER BY
CASE WHEN language='cs' THEN 1
WHEN language='en' THEN 2
ELSE 3
END
关于mysql - 按特定内容的存在对结果排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20316130/