Как мы возвращаем идентификатор столбца, который соответствует полю, имеющему повторяющиеся значения в SQL SERVER - PullRequest
0 голосов
/ 15 мая 2018

У меня есть таблица A (просто пример), в которой есть поля ID, Type. Я хочу знать, как вернуть ID поля с повторяющимися значениями типа, т.е.

id | Type
-------------
2  | Me
3  | Me
4  | You

Я хочу, чтобы значения 2 и 3 возвращались как ID. Как мне подойти к этому?

То, что я изначально сделал, было:

SELECT Name FROM A GROUP BY Name HAVING COUNT(NAME) > 1

Но это только возвращает значение Me. Я хочу знать, как вернуть:

Id | Type
2  | Me
3  | Me

Заранее спасибо.

Ответы [ 4 ]

0 голосов
/ 15 мая 2018

Это должно работать:

SELECT a.* FROM example a
JOIN (SELECT type FROM example GROUP BY Type HAVING COUNT(type)>1)
b on a.type = b.type
0 голосов
/ 15 мая 2018

Вы можете использовать COUNT в качестве аналитической функции:

SELECT id, type
FROM
(
    SELECT id, type, COUNT(*) OVER (PARTITION BY type) cnt
    FROM yourTable
) t
WHERE cnt > 1;

enter image description here

Демо

0 голосов
/ 15 мая 2018

Здравствуйте, может быть, вам просто нужно сделать это так:

SELECT ID,NAME FROM A WHERE ID IN (SELECT ID FROM A GROUP BY Name HAVING COUNT(NAME)>1 )
0 голосов
/ 15 мая 2018

Отфильтруйте таблицу, используя подзапрос в предложении WHERE, который находит имена, встречающиеся два или более раз:

SELECT Id, Type
FROM table 
WHERE name in (SELECT Name FROM A GROUP BY Name HAVING COUNT(NAME) > 1);
...