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

एसक्यूएल दो कॉलम के संयोजन के लिए अलग रिकॉर्ड प्राप्त करने के लिए (आदेश के बावजूद)

यहां least() का उपयोग करने वाली एक विधि दी गई है और greatest() :

select least(source, destination), greatest(source, destination), max(distance)
from distance
group by least(source, destination), greatest(source, destination);

इसका नुकसान यह है कि आप तालिका में नहीं एक पंक्ति वापस कर सकते हैं। उदाहरण के लिए, यदि आपके पास "मुंबई/चेन्नई/500" के साथ एक पंक्ति थी, तो यह क्वेरी "चेन्नई/मुंबई/500" लौटाएगी -- और यह पंक्ति मूल तालिका में नहीं है।

तो, एक वैकल्पिक तरीका है:

select source, destination, distance
from distance
where source < destination
union all
select destination, source, distance
from distance d
where source > destination and
      not exists (select 1
                  from distance d2
                  where d2.source = d.destination and d2.destination = d.source
                 );

यह संस्करण भी एएनएसआई-संगत है और सभी डेटाबेस में काम करना चाहिए।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. त्रुटि 1049 (42000):अज्ञात डेटाबेस 'mydatabasename'

  2. MySQL वन-टू-मैनी टू JSON फॉर्मेट

  3. MySQL के विरुद्ध हाइबरनेट इकाई में मॉडलिंग UUID

  4. MYSQL डेटाटाइम फ़ील्ड से सटीक समय अंतर प्राप्त करना

  5. सप्ताह और महीने की शुरुआत के लिए MySQL दौर की तारीख