【问题标题】:Find total count based of values from another table根据另一个表中的值查找总计数
【发布时间】:2020-06-24 12:55:57
【问题描述】:

在Mysql中:

我的表中有城市有重复值:

表格城市:

Name

New York, USA
New York, USA
Chicago, USA
Chicago, USA
Chicago, USA
Paris, France
Nice, France
Milan, Italy

本表数据格式为:

<city>, <country>

同:

<city><comma><space><country>

餐桌国家:

Name

USA
France
Italy

我想知道每个国家有多少个城市。喜欢:

Country      Count

USA           2
France        2
Italy         1

所以,我有 2 个查询:

SELECT count(*) FROM `Cities` WHERE Cities.name LIKE '%, USA%'

但是这个值USA应该来自:

SELECT * FROM `country`

现在,我如何获得所需的表格?

【问题讨论】:

  • 请注意,就“关系”数据而言,如果您没有 PRIMARY KEY,那么您就没有真正的表。
  • 同意。表 Cities 有一个主键,但在城市列上没有。这只是我想要查询的数据库的一小部分。

标签: mysql sql


【解决方案1】:

LEFT JOIN:

select t1.name Country, count(distinct t2.name) Count
from country t1 left join cities t2 
on t2.name like concat('%, ', t1.name)
group by t1.name

请参阅demo
结果:

| Country | Count |
| ------- | ----- |
| France  | 2     |
| Italy   | 1     |
| USA     | 2     |

【讨论】:

  • 谢谢,我现在正在尝试。我认为这将是一个嵌套查询。
  • 效果很好。但是,一个问题是我忘了提到表中的城市有重复的值。我已经更新了示例数据。我想我必须在查询中的某处使用 DISTINCT 或 UNIQUE?
  • 效果很好!你今天节省了我 5-6 个小时的时间。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多