Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Instrukcja zapytania SQL

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 główną przyczyną problemu jest zły projekt bazy danych. Tematy te nie powinny być przede wszystkim kolumnami i powinny być przechowywane w tabeli bardzo podobnej do pożądanego wyniku.

Edytuj

Więc co to robi?

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

Zwraca sid kolumna, „wirtualna” kolumna z zakodowaną na stałe wartością 'Math' który ma nazwę subject . Ponieważ nie zapisałeś wartości 'Math' gdzieś to musiało być zakodowane. Następnie w końcu wybiera również kolumnę math używając nazwy mark zamiast. Zwróć uwagę na różnicę między math i 'Math' - jeden to kolumna, a drugi literał ciągu z powodu pojedynczych cudzysłowów.

Odbywa się to dla wszystkich trzech przedmiotów (jeśli miałeś cztery przedmioty, potrzebowałbyś czterech części w UNII)

UNION ALL łączy wszystkie trzy SELECT w jedno zapytanie. andr rozwiązanie (które zostało odrzucone przez kogoś, kto go nie rozumiał) czyni to jeszcze jaśniejszym, wyraźnie umieszczając to w tabeli pochodnej (lub w widoku wbudowanym).

Uruchom każdy SELECT samodzielnie, aby zobaczyć, co robią poszczególne części.

Część as mark jest nazywany „aliasem kolumny” i może być również używany do pobierania kolumn o tej samej nazwie z różnych tabel w łączeniu, które nadal mają unikalne nazwy w zestawie wyników.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wybierz dane z różnych kolumn i dwóch tabel

  2. Nie mogę zainstalować mysql gem na Mac OS X

  3. Dlaczego to zapytanie INNER JOIN/ORDER BY mysql jest tak wolne?

  4. jak mogę wykonać polecenie CMD w aplikacji konsoli c#?

  5. MySQL — między miesiącami (zamiast sygnatury czasowej)