这可能有答案,但我甚至不知道如何寻找它。
我有一个多对多的关系,我想用“最重要的”一个来显示它。例如,这个查询
SELECT Country.CountryName, FlagColor.Color
FROM Country
JOIN FlagColor USING (CountryID)
WHERE ...;
会回来的
CountryName | Color
Ireland | Green
Ireland | Orange
Ireland | White
Italy | Green
Italy | Red
Italy | White
USA | Blue
USA | Red
USA | White
我知道 GROUP BY
可以将这些限制为每种颜色,但可以是其中的任何一种。我决定用蓝色,然后是红色,然后是绿色。所以我想修改上面的查询以返回
CountryName | Color
Ireland | Green
Italy | Red
USA | Blue
我该怎么做?如果相关的话,我使用的是mysql 5.7。
1条答案
按热度按时间o4hqfura1#
你可以用
FIELD
根据你的优先顺序对颜色进行排序,首先根据最不喜欢的颜色进行排序(从FIELD
对于不在列表中的值返回0,这将确保这些值排在最后)。然后你就可以得到MAX
每个国家和地区的价值JOIN
那是给Country
以及FlagColor
获得每个国家所需颜色的表格:输出:
在dbfiddle上演示