Запрос для нахождения схожих записей

176
25 июня 2019, 12:30

Есть таблица, 5000 строк:

id name  

Как мне реализовать запрос для нахождение id, name-ы которых идентичны.
P.S. предварительно я не знаю, что искать.
Если можно короткую инструкцию, пжл.

Answer 1

Дано:

id | name
----------
1  | test1
2  | test2
3  | test1
4  | test4
5  | test4
6  | test1

Есть несколько вариантов решения, Вы выберите какой больше нравится:

Первый:

Как и сказали в комментариях - через JOIN таблицы самой в себя:

SELECT DISTINCT
   t1.id AS some_id
FROM table t1 JOIN table t2 ON t1.name = t2.name AND t1.id != t2.id

Результат:

some_id
-------
1
4

Note: стоит сказать, что сортированный вывод связан с особенностью работы DISTINCT в PostgreSQL (MySQL под рукой нету), который перед тем как исключить повторения сортирует таблицу.

Без DISTINCT будет:

some_id
-------
1
3
6
4
5

Второй вариант, если нужно отсечь точное количество повторений - подзапрос:

SELECT
   table.id AS some_id
FROM
   (SELECT
       name,
       count(id) AS c
    FROM
       table
    GROUP BY name) AS sub_data JOIN table ON table.name = data.name
WHERE
   c = 2

Результат:

some_id
-------
4
5
READ ALSO
MYSQL SELECT помогите

MYSQL SELECT помогите

Не могу написать корректный sql select запросПрисутствуют 2 таблицы - garage_items и users_items

214
Нахождение нужного <template> по заголовку из JSONa

Нахождение нужного <template> по заголовку из JSONa

На странице очень много элементовЯ получаю json и нужно найти темплейт в котором есть заголовок, который равен заголовку из jsonа и затем извлечь...

209
Можете показать где levels в xml файле? И root element

Можете показать где levels в xml файле? И root element

Вот в пример нашел такой вот xml, мог бы показать где в нем levels, а где root element?

188