我有一个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í
我不会按translation
选择id
并按以下方式对结果进行排序:
language
=用户定义的语言language
='en'因此,如果有一行用户语言,它将首先返回(并且只有一行,因为我使用LIMIT
)。如果没有,将返回英文行,如果存在的话。否则没关系。
这是我尝试过的:
SELECT translation FROM `entries` WHERE id=1 ORDER BY language='cs' DESC, language='en' DESC LIMIT 1
我在排序中使用了DESC
,因为我假设language='cs'
为所需的行返回1,为不需要的行返回0。
答案 0 :(得分:0)
尝试CASE表达式
SELECT *
FROM `entries`
WHERE id = 1
ORDER BY
CASE WHEN language='cs' THEN 1
WHEN language='en' THEN 2
ELSE 3
END