select id,max(if(anum=1,values,0)) as a1, max(if(anum=2,values,0)) as a2, max(if(anum=3,values,0)) as a3 from ( select a.id,a.value,count(b.id) as anum from tt a left join tt b on a.id=b.id and a.value>=b.id group by a.id,a.value) a1 group by id
可以简单的用 select id,group_concat(value) from 一个表 group by id然后在你的程序中把逗号分隔符替换为TAB,或者直接处理。如果一定要分列,如果列数不确定的话,则只能通过你的程序或存储过程来实现。
max(if(anum=2,values,0)) as a2,
max(if(anum=3,values,0)) as a3
from (
select a.id,a.value,count(b.id) as anum
from tt a left join tt b on a.id=b.id and a.value>=b.id group by a.id,a.value) a1
group by id
select id,group_concat(value)
from 一个表
group by id然后在你的程序中把逗号分隔符替换为TAB,或者直接处理。如果一定要分列,如果列数不确定的话,则只能通过你的程序或存储过程来实现。
我现在就是用的2楼所说这种,不过在网页表格里把结果放在一个格子了,用逗号隔开显示的
1楼这个可行,貌似mysql不支持from子句子查询的,这个怎么可行的?
MySQL中的ROWNUM的实现
http://blog.csdn.net/ACMAIN_CHM/archive/2009/04/20/4095531.aspx
其实这个感觉还是用程序来弄比较合理。关于存储过程我还不会,所以没法弄。
谢谢两位提供的方案了。