mysql - 如何为第一列有重复的行选择第二列?

标签 mysql sql string

我有一个包含两列的表格:

  • 城市
  • 国家

我想要一个包含所有 City 值的结果集。对于具有相同城市值的行,我还想包括国家列。我想要的结果集的一个例子如下:

City
----------------
Chicago
New York
Toronto
London, Canada
London, England
Los Angeles

注意事项

有趣的是“伦敦”的重复城市名称包括逗号、空格和国家/地区名称以区分它们。

如何使用 MySQL 语句实现此目的?我尝试了一些使用 group byhaving 子句的方法,但我无法获得想要的结果。

最佳答案

使用:

  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/

相关文章:

java - 是否可以使用多个命名查询文件

css - 如何为 td 以下编写 xpath 或定位器

.net - 如何在 VB.net 中删除 .Sort 之前的引号

php - 通过 PHP 安全连接到 MySQL 数据库

c# - 聚合 SQL 函数; C# 中的 AVG

mysql - 通过 MySQL 函数反转字符串中的单词

string - 如何将 PChar 的一部分提取到字符串中?

javascript - onclick在php上显示MySQL fetch echo的值

java - 更新表时出错 [未为参数 3 指定值]

sql - 如何找到字符列的 MAX() 值?