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

SQL-forespørgselssætning

SELECT sid, 'Math' as subject, math as mark
FROM your_table
UNION ALL
SELECT sid, 'English' as subject, english as mark
FROM your_table
UNION ALL
SELECT sid, 'French' as subject, french as mark
FROM your_table

Men grundårsagen til dit problem er et forkert databasedesign. Disse emner bør ikke være kolonner i første omgang og bør gemmes i en tabel, der ligner dit ønskede output.

Rediger

Så hvad gør det?

SELECT sid, 'Math' as subject, math as mark
FROM your_table

Returnerer sid kolonne, en "virtuel" kolonne med den hårdkodede værdi 'Math' som får navnet subject . Da du ikke har gemt værdien 'Math' et eller andet sted skulle dette hardkodes. Så vælger den til sidst også kolonnen math ved at bruge navnet mark i stedet. Bemærk forskellen mellem math og 'Math' - den ene er en kolonne, den anden en streng bogstavelig på grund af de enkelte anførselstegn.

Dette gøres for alle tre fag (hvis du havde fire fag, skulle du bruge fire dele i UNION)

UNION ALL kombinerer alle tre SELECT til én enkelt forespørgsel. andr-løsning (som er blevet nedstemt af en, der ikke forstod det) gør dette endnu klarere ved eksplicit at sætte det i en afledt tabel (eller inline-visning).

Kør hver SELECT for sig for at se, hvad de enkelte dele gør.

Delen as mark kaldes et "kolonnealias" og kan også bruges til at hente kolonner med samme navn fra forskellige tabeller i en join og stadig have unikke navne i resultatsættet.



  1. Brug MySQL relationsdatabaser på Fedora 13

  2. Hvor er Query Analyzer i SQL Server Management Studio 2008 R2?

  3. PHP MYSQL <?php echo $row[$variable]; ?>

  4. Opret underkategorivalgsboks ved Skift