Sie können immer GROUP BY
verwenden / HAVING
Abfrage in einer IN-Klausel. Dies funktioniert und ist relativ einfach, aber möglicherweise nicht besonders effizient, wenn die Anzahl der doppelten Zeilen relativ groß ist.
SELECT *
FROM table1
WHERE (name, type_id) IN (SELECT name, type_id
FROM table1
GROUP BY name, type_id
HAVING COUNT(*) > 1)
Es wäre im Allgemeinen effizienter, analytische Funktionen zu verwenden, um nicht ein zweites Mal auf den Tisch zu fallen.
SELECT *
FROM (SELECT id,
name,
type_id,
code,
lat,
long,
count(*) over (partition by name, type_id) cnt
FROM table1)
WHERE cnt > 1
Je nachdem, was Sie mit den Daten vorhaben und wie viele Duplikate einer bestimmten Zeile möglicherweise vorhanden sind, möchten Sie möglicherweise auch table1
verknüpfen zu sich selbst, um die Daten in einer einzelnen Zeile zu erhalten
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)