Saya ingin melakukan sesuatu seperti ini:
SELECT *
FROM db.table
WHERE COUNT(someField) > 1
Bagaimana saya bisa mencapai ini di MySql?
Gunakan HAVING
, bukan WHERE
klausa, untuk perbandingan hasil agregat.
Mengambil kueri pada nilai nominal:
SELECT *
FROM db.table
HAVING COUNT(someField) > 1
Idealnya, harus ada GROUP BY
definisi untuk penilaian yang tepat dalam HAVING
klausa, tetapi MySQL mengizinkan kolom tersembunyi dari GROUP BY ...
Apakah ini dalam persiapan untuk kendala unik someField
? Sepertinya itu harus ...
GROUP BY
pasti (kecuali ini adalah beberapa hal non standar MySQL)?someField
nilai bukan null atau hasil kosong jika tidak.sumber
Anda juga dapat melakukan ini dengan bergabung sendiri:
sumber
Ini dia:
sumber
Satu arah
sumber
Seperti yang dikatakan OMG Ponies, klausa memiliki adalah apa yang Anda cari. Namun, jika Anda berharap bahwa Anda akan mendapatkan baris diskrit daripada ringkasan ("memiliki" membuat ringkasan) - ini tidak dapat dilakukan dalam satu pernyataan. Anda harus menggunakan dua pernyataan dalam kasus itu.
sumber
Saya memberikan contoh pada Group By antara dua tabel di Sql:
Select cn.name,ct.name,count(ct.id) totalcity from city ct left join country cn on ct.countryid = cn.id Group By cn.name,ct.name Having totalcity > 2
sumber
Bagi saya, Tidak memiliki grup dengan hanya mengembalikan hasil kosong. Jadi saya kira memiliki grup untuk pernyataan memiliki cukup penting
sumber
Juga harus disebutkan bahwa "pk" harus menjadi bidang kunci. Gabung mandiri
oleh Bill Karwin memberi Anda semua catatan yang duplikat yang saya inginkan. Karena beberapa memiliki lebih dari dua, Anda bisa mendapatkan rekaman yang sama lebih dari sekali. Saya menulis semua ke tabel lain dengan bidang yang sama untuk menyingkirkan catatan yang sama dengan penekanan bidang kunci. Saya mencoba
SELECT * FROM db.table HAVING COUNT(someField) > 1
di atas dulu. Data yang dikembalikan darinya hanya memberikan satu duplikat, kurang dari 1/2 dari apa yang diberikan kepada Anda tetapi hitungannya baik jika itu yang Anda inginkan.
sumber