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

SQL तालिका में शर्तों के साथ कॉलम नाम के रूप में कॉलम मान का चयन कैसे करें

इसके बारे में जाने का एक तरीका सशर्त एकत्रीकरण का उपयोग करना है

SELECT name,
       MAX(CASE WHEN field = 'Gender' THEN value END) gender,
       MAX(CASE WHEN field = 'Age' THEN value END) age
  FROM customers
 GROUP BY name

दूसरा तरीका (यदि आप केवल इन दो स्तंभों में रुचि रखते हैं) होगा

SELECT c1.name, c1.value gender, c2.value age
  FROM customers c1 JOIN customers c2
    ON c1.name = c2.name
   AND c1.field = 'Gender'
   AND c2.field = 'Age';

धारणा यह है कि प्रत्येक नाम के लिए लिंग और आयु दोनों मौजूद हैं। ऐसा नहीं है तो OUTER JOIN . का उपयोग करें INNER JOIN . के बजाय ऐसा ही

SELECT n.name, c1.value gender, c2.value age
  FROM
(
  SELECT DISTINCT name
    FROM customers
) n LEFT JOIN customers c1
    ON n.name = c1.name AND c1.field = 'Gender' 
    LEFT JOIN customers c2
    ON n.name = c2.name AND c2.field = 'Age';

आउटपुट:

|   NAME | GENDER | AGE |
|--------|--------|-----|
| Angela | Female |  28 |
|  Davis |   Male |  30 |

यह रहा SQLFiddle डेमो



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. कुप्पी-SQLAlchemy - टेबल/डेटाबेस कब बनाए और नष्ट किए जाते हैं?

  2. MySQL के साथ स्प्रिंग बूट CRUD उदाहरण

  3. MySQL:=सच बनाम बूलियन पर सच है। कब किसका उपयोग करना उचित है? और कौन सा विक्रेता स्वतंत्र है?

  4. MySQL रो 30153 GROUP_CONCAT () त्रुटि द्वारा काटा गया था

  5. एसक्यूएल दो टेबल में शामिल हों