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