sql >> Database teknologi >  >> RDS >> Mysql

Sådan vælger du kolonneværdi som kolonnenavn med betingelser i SQL-tabel

En måde at gøre det på er at bruge betinget aggregering

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

Den anden vej (hvis du kun er interesseret i disse to kolonner) ville være

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';

Antagelsen er, at både køn og alder eksisterer for hvert navn. Hvis det ikke er tilfældet, så brug en OUTER JOIN i stedet for en INNER JOIN sådan

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';

Output:

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

Her er SQLFiddle demo



  1. Hvordan finder man ud af, at brugeren er til stede i Sqlite-databasen ved hjælp af Android?

  2. Hvordan aktiveres MySQL Query Log?

  3. Sådan gemmer du længde- og breddegrad i databasen. MySQL går ikke længere end -99.9999999

  4. Introduktion til MaxScale Administration Brug af maxctrl til MariaDB Cluster