MySQL:当在右表中出现值或另一个值时,仅显示左连接中的记录

时间:2017-01-12 14:09:22

标签: mysql

我有一张包含这些条目的表格:

id  name                    id_language
1   San Paolo Stadium       2
1   Stadio San Paolo        1
1   Stade San Paolo         3
2   Castel Nuovo            1
2   Maschio Angioino        2
3   Abbazia di Sant'Antimo  1
4   Fontana di Trevi        1
4   Trevi Fountain          2
4   Trevi-Brunnen           3

第一列属于名为“Places”的表,其中包含有关某个“地点”的信息。第二列和第三列属于另一个名为“Names”的表,其中包含各种语言中这些地方的名称,由“id_language”值标识。这两个表与“一对多关系”相结合,其中一个“地方”可以有不同语言的一个或多个“名称”。

我希望每个地方只显示一个且只有这些名称的查询,并符合以下条件: 1)如果存在具有给定查询的特定id_language的地方的名称,则仅打印该名称; 2)否则,用另一个id_language打印那个地方的名称。

示例:我想要所有名称都带有id_language = 2的地方。没有id_language = 2名称的地方将打印出包含id_language = 1的名称,如下所示:

id  name                    id_language
1   San Paolo Stadium       2
2   Maschio Angioino        2
3   Abbazia di Sant'Antimo  1
4   Trevi Fountain          2

原始查询:

SELECT places.id,
       name_descriptions.name,
       name_descriptions.id_language
FROM places 
LEFT JOIN places_name_descriptions ON places.id = places_name_descriptions.id_places 
LEFT JOIN name_descriptions ON places_name_descriptions.id_name_description = name_descriptions.id 
ORDER BY places.id, name_descriptions.name ASC

0 个答案:

没有答案