Anda selalu dapat menggunakan GROUP BY
/ HAVING
query dalam klausa IN. Ini berfungsi dan relatif mudah tetapi mungkin tidak terlalu efisien jika jumlah baris duplikat relatif besar.
SELECT *
FROM table1
WHERE (name, type_id) IN (SELECT name, type_id
FROM table1
GROUP BY name, type_id
HAVING COUNT(*) > 1)
Umumnya akan lebih efisien untuk menggunakan fungsi analitik untuk menghindari memukul meja untuk kedua kalinya.
SELECT *
FROM (SELECT id,
name,
type_id,
code,
lat,
long,
count(*) over (partition by name, type_id) cnt
FROM table1)
WHERE cnt > 1
Bergantung pada apa yang Anda rencanakan untuk dilakukan dengan data dan berapa banyak duplikat dari baris tertentu yang mungkin ada, Anda mungkin juga ingin bergabung dengan table1
ke dirinya sendiri untuk mendapatkan data dalam satu baris
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)