Поиск записей с одинаковыми значениями в разных полях? - PullRequest
0 голосов
/ 23 января 2019

У меня есть таблица people, два поля этой таблицы: id и country.

Я хочу найти все записи, которые имеют одинаковые id и country, потому чтоid должно быть уникальным для каждой страны.

Как правильно сделать это?

например, пример вывода должен быть:

+--------------+---------+
| id           | country |
+--------------+---------+
| 123          | AT      |
| 123          | AT      |
| 456          | GB      |
| 456          | GB      |
| 456          | GB      |
| 789          | AU      |
| 789          | AU      |

Ответы [ 3 ]

0 голосов
/ 23 января 2019

Простой GROUP BY с предложением HAVING будет достаточно:

SELECT id, country
FROM people
WHERE id <> "" AND id IS NOT NULL
GROUP BY id, country
HAVING COUNT(*) > 1
0 голосов
/ 23 января 2019

это может сработать

 with cte as (SELECT id -- extracts ID for countryes present more than 1 time
FROM people
GROUP BY id, country
HAVING COUNT(*) > 1)

select id, country -- adds repeated values
from people p join cte on p.id=cte.id
0 голосов
/ 23 января 2019
    SELECT p1.* FROM people p1
    INNER JOIN people p2
    ON p1.id = p2.id AND p1.country = p2.country
    ORDERY BY p1.id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...