Mysql
 sql >> база данни >  >> RDS >> Mysql

Изявление за 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

Но основната причина за вашия проблем е грешен дизайн на база данни. Тези теми не трябва да бъдат колони на първо място и трябва да се съхраняват в таблица, много подобна на желания от вас резултат.

Редактиране

И така, какво прави?

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

Връща sid колона, "виртуална" колона с твърдо кодирана стойност 'Math' който получава името subject . Тъй като не сте съхранили стойността 'Math' някъде това трябваше да бъде твърдо кодирано. След това най-накрая избира и колоната math използвайки името mark вместо. Обърнете внимание на разликата между math и 'Math' - единият е колона, а другият низов литерал поради единичните кавички.

Това се прави и за трите предмета (ако имахте четири предмета, ще ви трябват четири части в UNION)

UNION ALL комбинира всичките три SELECT в една единствена заявка. andr решение (което беше гласувано против от някой, който не го е разбрал) прави това още по-ясно, като изрично го поставя в извлечена таблица (или вграден изглед).

Стартирайте всеки SELECT самостоятелно, за да видите какво правят отделните части.

Частта as mark се нарича "псевдоним на колона" и може също да се използва за извличане на колони с едно и също име от различни таблици в съединение и все още да имат уникални имена в резултатния набор.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Избор въз основа на пътя в mysql

  2. Преобразуване на низ във формат MySQL timestamp в php

  3. Поточно предаване на големи набори от резултати с MySQL

  4. Връщане на blob с json

  5. Объркана Ruby/MySQL грешка:невалиден пакет:несъответствие на поредния номер