0

想象一下以下场景:我有一个存储在一个表中的标签列表和一个存储在另一个表中的语言列表。我有用户当前的语言(例如阿拉伯语),我想从他们的表中查询所有标签,条件如下:如果它们以阿拉伯语存在,则获取阿拉伯语版本。如果标签在阿拉伯语中不存在,则回退到英语并获取英语版本。

问题是它可能同时存在于阿拉伯语和英语中,我不想同时选择两行(所以简单地使用是WHERE label_language='arabic' OR label_language='english'行不通的),如果可能的话,我想在单个查询中执行此操作。

标签表:

id (non unique)|label_name|label_language
1|Something|arabic
1|Something Else|english
3|Blabla|english
4|Some text|english
4|Some other text|arabic
4

1 回答 1

2
SELECT l1.id, COALESCE(l2.label_name, l1.label_name) AS label_name
    FROM Labels l1
        LEFT JOIN Labels l2
            ON l1.id = l2.id
                AND l2.label_language = 'arabic'
                AND l2.label_name <> ''
    WHERE l1.label_language = 'english'
于 2012-09-19T15:54:48.777 回答