WITH DuplicateCity AS (
SELECT Name
FROM city
GROUP BY Name
HAVING COUNT(Name) > 1
)
SELECT *
FROM city
WHERE Name IN (
SELECT Name
FROM DuplicateCity
)
ORDER BY Name
| ID | Name | CountryCode | District | Population |
| 3,960 | Alexandria | USA | Virginia | 128,283 |
| 609 | Alexandria | EGY | Aleksandria | 3,328,196 |
| 1967 | Anyang | CHN | Henan | 420,332 |
| 2341 | Anyang | KOR | Kyonggi | 591,106 |
| 3,909 | Arlington | USA | Virginia | 174,838 |
| 3,845 | Arlington | USA | Texas | 332,969 |
| 3,853 | Aurora | USA | Colorado | 276,393 |
| 3,941 | Aurora | USA | Illinois | 142,990 |
| 3,546 | Barcelona | VEN | Anzoátegui | 322,267 |
| 654 | Barcelona | ESP | Katalonia | 1,503,451 |
| ... |
| Общие табличные выражения (CTE) — это простой способ разбить сложный запрос SQL на несколько запросов, что придаёт больше гибкости и управляемости. Данный запрос аналогичен примеру с оператором IN. Подзапрос, выбирающий повторяющиеся города, помещается во временную таблицу, которая потом используется в основном запросе. |