Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL GROUP BY वरीयता के साथ

आप प्रत्येक ईमेल के लिए अधिक 'प्रासंगिक' रिकॉर्ड प्राप्त करने के लिए एक समग्र फ़ंक्शन का उपयोग कर सकते हैं।
मुझे लगता है कि इस क्वेरी से आपको सबसे अच्छा परिणाम मिलेगा:

SELECT emailAddress, max(concat(fullName,',',address1,',',address2))
FROM table
GROUP BY emailAddress

यह प्रत्येक ईमेल पते के लिए सबसे अमीर पंक्ति लौटाएगा लेकिन सभी डेटा एक स्ट्रिंग (अल्पविराम से अलग) के भीतर वापस कर दिया जाएगा, इसलिए आपको इसे किसी भी तरह से पार्स करना होगा।
यदि प्रदर्शन कोई समस्या नहीं है और आप अलग-अलग क्षेत्रों में एक सामान्य परिणाम सेट करना चाहते हैं तो आप एक के साथ जा सकते हैं:

SELECT table.emailAddress, fullName, address1, address2 
FROM 
table JOIN 
    (SELECT emailAddress, 
       max(concat(fullName,address1,address2)) as bestRowInOneString
    FROM table
    GROUP BY emailAddress
    ) bestRowsSubQuery 
 ON 
   concat(table.fullname,table.address1,table.address2) = bestRowsSubQuery.bestRowInOneString
   AND table.emailAddress = bestRowsSubQuery.emailAddress


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Android से MySQL डेटाबेस कनेक्ट करें

  2. MySQL में दिनांक सीमा विरोधों की जाँच हो रही है

  3. MySQL:अनुक्रमणिका के साथ पूर्णांक मान और स्ट्रिंग फ़ील्ड की तुलना

  4. प्रोग्रामिंग त्रुटि:किसी थ्रेड में बनाई गई SQLite ऑब्जेक्ट का उपयोग केवल उसी थ्रेड में किया जा सकता है

  5. MySQL Ubuntu 14.04 LTS को पूरी तरह से हटा दें