मैं कॉलम "नाम" और कॉलम "जन्म" से दो रिकॉर्ड प्रदर्शित करना चाहता हूं ताकि प्रत्येक को COUNT () का उपयोग करके डुप्लिकेट की संख्या मिल जाए

enter image description here

मैं क्वेरी का उपयोग कर रहा हूँ

SELECT 
    nama,  COUNT(nama),
    lahir,  COUNT(lahir)
FROM tb_test
GROUP BY nama , lahir
HAVING  COUNT(nama) > 1 AND COUNT(lahir) > 1;

लेकिन परिणाम हमेशा शून्य होता है

enter image description here

-1
Robby Ramadhan 15 फरवरी 2021, 04:47

2 जवाब

सबसे बढ़िया उत्तर

मेरा मानना ​​​​है कि आप आसन्न गिनती के साथ अलग-अलग कॉलम ढूंढ रहे हैं। ये कोशिश करें:

select 
    t.nama, (select count(1) from tb_test cn where cn.nama = t.nama) as cnt_nama, 
    t.lahir, (select count(1) from tb_test cn where cn.lahir = t.lahir) as cnt_lahir
from tb_test t
; 

जाहिर है कि दो या अधिक के साथ कुछ भी डुप्लीकेट है। आप अपनी आवश्यकता के आधार पर यह सब सबक्वायरी में डाल सकते हैं। यह कुछ इस तरह होगा:

select s.* 
from ( 
    select 
        t.nama, (select count(1) from tb_test cn where cn.nama = t.nama) as cnt_nama, 
        t.lahir, (select count(1) from tb_test cn where cn.lahir = t.lahir) as cnt_lahir
    from tb_test t
) s 
where s.cnt_nama > 1 or s.cnt_lahir > 1
; 
0
anachronist 15 फरवरी 2021, 05:52

आप शायद HAVING COUNT(id) > 1 चाहते हैं। लेकिन फिर भी उस नमूना डेटा में समान nama और lahir मानों वाली कोई पंक्तियाँ नहीं हैं।

आप यह भी चाह सकते हैं:

SELECT 'nama' as `Field`, nama as `Value`, count(id) as `Count`
FROM tb_test
GROUP BY nama
HAVING  COUNT(id) > 1

UNION

SELECT 'lahir' as `Field`, lahir as `Value`, count(id) as `Count`
FROM tb_test
GROUP BY lahir
HAVING  COUNT(id) > 1
0
Joel Coehoorn 15 फरवरी 2021, 05:00