sql >> Databáze >  >> RDS >> Mysql

Příkaz SQL dotazu

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

Ale hlavní příčinou vašeho problému je špatný návrh databáze. Tyto předměty by na prvním místě neměly být sloupce a měly by být uloženy v tabulce velmi podobné vašemu požadovanému výstupu.

Upravit

Co to tedy dělá?

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

Vrátí sid sloupec, "virtuální" sloupec s pevně zakódovanou hodnotou 'Math' která má název subject . Protože jste neuložili hodnotu 'Math' někde to muselo být pevně zakódováno. Nakonec také vybere sloupec math pomocí názvu mark namísto. Všimněte si rozdílu mezi math a 'Math' - jeden je sloupec a druhý řetězcový literál kvůli jednoduchým uvozovkám.

To se provádí pro všechny tři předměty (pokud byste měli čtyři předměty, potřebovali byste v UNIONu čtyři části)

UNION ALL kombinuje všechny tři SELECTy do jednoho jediného dotazu. řešení andr (které bylo odmítnuto někým, kdo mu nerozuměl) to ještě více objasňuje tím, že to explicitně vloží do odvozené tabulky (nebo vloženého pohledu).

Spusťte každý SELECT samostatně, abyste viděli, co jednotlivé části dělají.

Část as mark se nazývá "alias sloupce" a lze jej také použít k načtení sloupců se stejným názvem z různých tabulek ve spojení, a přesto mají ve výsledné sadě jedinečné názvy.



  1. Jak odsadit tabulku HTML pomocí PHP pro odečtení hodnoty buňky 1. řádku od hodnoty buňky 2. řádku různých sloupců

  2. Jak uložit pole bajtů v Oracle?

  3. Problém s verzí přístupu k datům Oracle

  4. Jak procházet seznamem s oddělovači v Oracle PLSQL