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
列,與被命名爲subject
的硬編碼值'Math'
一個「虛擬」的列。由於您未在某處存儲值'Math'
,因此必須進行硬編碼。然後最後它也使用名稱mark
來選擇列math
。請注意0和'Math'
之間的區別 - 其中一個是另一個字符串,因爲是單引號。
這是所有三個主題進行(如果你有四個科目,你需要在UNION四個部分)
的UNION ALL將全部三個SELECT查詢到一個單一的查詢。 andr解決方案(已經被不理解它的人降級)通過將其明確地放入派生表(或內聯視圖)中使得更清楚。
單獨運行每個SELECT以查看各個部件在做什麼。
部分as mark
被稱爲「列別名」,也可用於從聯接中的不同表中檢索具有相同名稱的列,並且在結果集中仍具有唯一名稱。
@a_horse_with_no_name:哎呀,在同一時間相同的答案。你想讓我刪除我的帖子嗎?反正+1到你,因爲你是比我快:) – Marco 2011-04-28 06:37:44
問題是我把它當作一個Excel工作表,我想將其轉換在同一時間:) – Ali 2011-04-28 06:41:53
@a_horse_with_no_name聚齊3分模仿的答案是有可能爲我提供多一點的解釋:) BTW我想它和它的工作就像一個魅力 的感謝! – andr 2011-04-28 06:43:42