Найти общее количество на основе значений из другой таблицы - PullRequest
0 голосов
/ 12 марта 2020

В 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`

Теперь, как сделать Я получаю желаемый стол?

1 Ответ

2 голосов
/ 12 марта 2020

С 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

См. Демоверсию . Результаты:

| Country | Count |
| ------- | ----- |
| France  | 2     |
| Italy   | 1     |
| USA     | 2     |
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...