我有一个包含两列的表格:
- 城市
- 国家
我想要一个包含所有 City 值的结果集。对于具有相同城市值的行,我还想包括国家列。我想要的结果集的一个例子如下:
City
----------------
Chicago
New York
Toronto
London, Canada
London, England
Los Angeles
注意事项
有趣的是“伦敦”的重复城市名称包括逗号、空格和国家/地区名称以区分它们。
如何使用 MySQL 语句实现此目的?我尝试了一些使用 group by
和 having
子句的方法,但我无法获得想要的结果。
最佳答案
使用:
SELECT a.city AS city
FROM YOUR_TABLE a
GROUP BY a.city
HAVING COUNT(a.country) = 1
UNION ALL
SELECT CONCAT(b.city, ', ', b.country) AS city
FROM YOUR_TABLE b
WHERE EXISTS (SELECT NULL
FROM YOUR_TABLE c
WHERE c.city = b.city
GROUP BY c.city
HAVING COUNT(c.country) > 1)
ORDER BY city
关于mysql - 如何为第一列有重复的行选择第二列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6005863/