Rumah > Soal Jawab > teks badan
P粉6595182942023-09-06 00:57:21
Ini bukan jadual nilai kunci. Selalunya dipanggil jadual/hubungan/skema nilai entiti-atribut.
Lihat soalannya, jika jadual disusun dalam bentuk biasa biasa pertama dan kedua, ini akan menjadi remeh - hanya menggabungkan nilai, kumpulan mengikut nilai tersebut, dan kira....
SELECT manufacturer, model, firstname, COUNT(DISTINCT submission_id) FROM atable GROUP BY manufacturer, model, firstname HAVING COUNT(DISTINCT submission_id)>1;
atau guna connect....
SELECT a.manufacturer, a.model, a.firstname , a.submission_id, b.submission_id FROM atable a JOIN atable b ON a.manufacturer=b.manufacturer AND a.model=b.model AND a.firstname=b.firstname WHERE a.submission_id<b.submission_id ;
Atau gunakan isihan dan bandingkan baris bersebelahan....
SELECT * FROM ( SELECT @prev.submission_id AS prev_submission_id , @prev.manufacturer AS prev_manufacturer , @prev.model AS prev_model , @prev.firstname AS pref_firstname , a.submission_id , a.manufacturer , a.model , set @prev.submission_id:=a.submission_id as currsid , set @prev.manufacturer:=a.manufacturer as currman , set @prev.model:=a.model as currmodel , set @prev.firstname=a.forstname as currname FROM atable ORDER BY manufacturer, model, firstname, submission_id ) WHERE prev_manufacturer=manufacturer AND prev_model=model AND prev_firstname=firstname AND prev_submission_id<>submission_id;
Jadi penyelesaiannya adalah dengan menjadikan data anda kelihatan seperti hubungan biasa....
SELECT ilv.values , COUNT(ilv.submission_id) , GROUP_CONCAT(ilv.submission_id) FROM (SELECT a.submission_id , GROUP_CONCAT(CONCAT(a.key, '=',a.value)) AS values FROM atable a GROUP BY a.submission_id ) ilv GROUP BY ilv.values HAVING COUNT(ilv.submission_id)>1;
Semoga penyelesaian berdasarkan gabungan dan urutan harus jelas sekarang.