【发布时间】:2017-06-22 13:31:23
【问题描述】:
我对 mysql 完全陌生。在这里,我尝试在mysql 中进行查询,它将col1 列根据其类别(col2)按如下所示的排序顺序分为4 个不同的列。到目前为止,我已经写了一个这样的查询:
select if(category = 'first',name ,NULL) as first,
if(category = 'second',name,NULL) as second,
if(category = 'third',name,NULL) as third,
if(category = 'fourth',name,NULL) as fourth
from 'table';
这段代码给了我四列,但我现在卡住了,因为我无法进一步过滤它。
给定表:
name category
John first
Sunil third
Jenny third
Ashley fourth
Meera second
Abhay first
必答:
col1 col2 col3 col4
Abhay Meera Jenny Ashley
John NULL Sunil NULL
请注意,答案中的所有列都已排序。
编辑:我想这个问题并不清楚最终答案的格式。感谢@philipxy 指出。最终答案应至少调整行数(在我的情况下为 2)。所有列的行数应该相等,如果某些列的值较小,则该行将在各自的列中具有
NULL值,例如上面的col2和col 4。最后,所有列都应该按排序顺序排列,其中NULL将在最后一个(如果有的话)例如假设有一个名为Olly和categoryfourth的条目,那么它应该出现在NULL之前@987654335 @ 和Ashley之后。
【问题讨论】:
-
是否需要输出假设只有 2 行?还是可能有更多取决于原始表中的行数?
-
可以有更多行。我在这里仅展示了一个示例。
-
你为什么要这样做?这将值强制到表的行中,就好像它是一个 gui 网格一样。您可能不应该在 sql 表中进行格式化,而应该在 gui 中进行格式化。考虑到您不知道“select t.*”是什么意思。你几乎肯定不想要你想要的结果。
标签: mysql sql nested-query