SELECT FROM table WHERE lang =:preferred OR lang =:default

时间:2015-05-21 08:46:25

标签: mysql sql select

我有一个包含语言变量和内容字段的简单表。

------------------------
|  lg    |   content   |
------------------------
|  en    |  Hello      |
------------------------
|  es    |  Hola       |
------------------------

我无法确定此表中是否包含西班牙语,因此我只需从表中选择值为'es''en'的表格。我一直在研究并找到SQL ISNULL()NVL()IFNULL()COALESCE()函数。我一直在研究嵌套的IF ELSE SQL SELECT语句,但我真的需要知道实现这一目的的最简单方法是什么?

2 个答案:

答案 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