我有一个包含语言变量和内容字段的简单表。
------------------------
| lg | content |
------------------------
| en | Hello |
------------------------
| es | Hola |
------------------------
我无法确定此表中是否包含西班牙语,因此我只需从表中选择值为'es'
或'en'
的表格。我一直在研究并找到SQL ISNULL()
,NVL()
,IFNULL()
和COALESCE()
函数。我一直在研究嵌套的IF ELSE
SQL SELECT
语句,但我真的需要知道实现这一目的的最简单方法是什么?
答案 0 :(得分:1)
在表格与其自身之间进行交叉连接,以便您并排获得结果。然后,您可以使用coalesce
来获得所需的值。
示例:
select
coalesce(es.content, en.content, 'No translation') as content
from
TheTable es
cross join TheTable en on en.id = 42 and en.lg = 'en'
where
es.id = 42 and es.lg = 'es'
答案 1 :(得分:1)
在评论中澄清lg
是主键后,选择具有自定义顺序和limit
子句的行会更容易:
SELECT content
FROM myable
WHERE lg IN ('es', 'en')
ORDER BY FIELD (lg, 'es', 'en')
LIMIT 1