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

एसक्यूएल अलग, 2 कॉलम प्राप्त करना

आपको दोनों स्तंभों को मिलाना चाहिए और फिर अलग-अलग मानों के लिए फ़िल्टर करना चाहिए:

select distinct T.from_to from
( select `from` as from_to
  from messages
  union
  select `to` as from_to
  from messages
) T

यदि आपको वास्तव में अल्पविराम से अलग स्ट्रिंग में सभी की आवश्यकता है, तो GROUP_CONCAT([DISTINCT] एकत्रीकरण समारोह।

संपादित :

आपको समाधान जेराल्ड उत्तर के रूप में चिह्नित करना चाहिए। टेस्ट यूनियन ऑपरेटर के बाद और mysql Union ऑपरेटर डॉक्यूमेंटेशन को फिर से पढ़ें। , डिफ़ॉल्ट रूप से, अलग-अलग मानों के लिए mysql फ़िल्टर:

mysql> create table ta( a int );
Query OK, 0 rows affected (0.05 sec)

mysql> insert into ta values (1),(1),(2);
Query OK, 3 rows affected (0.00 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> select * from ta
    -> union
    -> select * from ta;
+------+
| a    |
+------+
|    1 |
|    2 |
+------+
2 rows in set (0.00 sec)

फिर, अंतिम क्वेरी है:

  select `from` as from_to
  from messages
  union distinct
  select `to` as from_to
  from messages

ध्यान दें कि distinct अनिवार्य नहीं है।

केवल अगर आपको अल्पविराम से अलग स्ट्रिंग की आवश्यकता है तो पहला समाधान आवश्यक है:

select distinct GROUP_CONCAT( distinct T.from_to from )
( select `from` as from_to
  from messages
  union
  select `to` as from_to
  from messages
) T


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL - पर्ल:पर्ल उदाहरण में सबमिट किए गए ज़िप कोड के एक्स मील के भीतर ज़िप कोड की सरणी कैसे प्राप्त करें?

  2. तैयार विवरण ALTER तालिका प्रश्नों के साथ काम नहीं कर रहा है

  3. गिनती के साथ एसक्यूएल लगातार रिकॉर्ड

  4. MySQL में अपडेट के लिए चयन का परीक्षण कैसे करें

  5. उपयोगकर्ता की ऊंचाई और वजन सहेजा जा रहा है