Вы всегда можете использовать запрос GROUP BY
/ HAVING
в предложении IN.Это работает и является относительно простым, но это может быть не особенно эффективно, если количество повторяющихся строк относительно велико.
SELECT *
FROM table1
WHERE (name, type_id) IN (SELECT name, type_id
FROM table1
GROUP BY name, type_id
HAVING COUNT(*) > 1)
В целом было бы более эффективно использовать аналитические функции, чтобы избежать попадания в таблицувторой раз.
SELECT *
FROM (SELECT id,
name,
type_id,
code,
lat,
long,
count(*) over (partition by name, type_id) cnt
FROM table1)
WHERE cnt > 1
В зависимости от того, что вы планируете делать с данными, и сколько может быть дубликатов определенной строки, вы также можете присоединиться к table1
к себе, чтобы получить данные в одномстрока
SELECT a.name,
a.type_id,
a.id,
b.id,
a.code,
b.code,
a.lat,
b.lat,
a.long,
b.long
FROM table1 a
JOIN table1 b ON (a.name = b.name AND
a.type_id = b.type_id AND
a.rowid > b.rowid)