我有一个看起来像的mysql表:
id group_id item_code item_label item_detail item_score
1 10 BLU123 Blue 123 Blah blah 123 3
2 10 BLU124 Blue 124 Blah blah 124 6
3 10 BLU125 Blue 125 Blah blah 125 2
是否有任何sql语句将表输出为:
group_id item_code1 item_label1 item_detail1 item_score1 item_code2 item_label2 item_detail2 item_score2 item_code3 item_label3 item_detail3 item_score3
10 BLU123 Blue 123 Blah blah 123 3 BLU124 Blue 124 Blah blah 124 6 BLU125 Blue 125 Blah blah 125 2
全部谢谢!
答案 0 :(得分:2)
根据需要,选择要在Excel中插入一行的所有行。您可以在表格中添加任意数量的行。
SELECT
CONCAT(
group_id,',', GROUP_CONCAT(
CONCAT_WS(',', item_code, item_label, item_detail, item_score)
)
)
FROM thetable
返回CSV:
10,BLU123,Blue 123,Blah blah 123,3,BLU124,Blue 124,Blah blah 124,6,BLU125,Blue 125,Blah blah 125,2
答案 1 :(得分:1)
如果真的是id
值,你可以这样做:
select group_id,
max(case when id = 1 then item_code end) item_code1,
max(case when id = 1 then item_label end) item_label1,
max(case when id = 1 then item_detail end) iitem_detail1,
max(case when id = 1 then item_score end) item_score1,
max(case when id = 2 then item_code end) item_code2,
max(case when id = 2 then item_label end) item_label2,
max(case when id = 2 then item_detail end) iitem_detail2,
max(case when id = 2 then item_score end) item_score2,
max(case when id = 3 then item_code end) item_code3,
max(case when id = 3 then item_label end) item_label3,
max(case when id = 3 then item_detail end) iitem_detail3,
max(case when id = 3 then item_score end) item_score3
from yourtable
group by group_id
结果:
| GROUP_ID | ITEM_CODE1 | ITEM_LABEL1 | IITEM_DETAIL1 | ITEM_SCORE1 | ITEM_CODE2 | ITEM_LABEL2 | IITEM_DETAIL2 | ITEM_SCORE2 | ITEM_CODE3 | ITEM_LABEL3 | IITEM_DETAIL3 | ITEM_SCORE3 |
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 10 | BLU123 | Blue 123 | Blah blah 123 | 3 | BLU124 | Blue 124 | Blah blah 124 | 6 | BLU125 | Blue 125 | Blah blah 125 | 2 |
如果您不能依赖表格中的id
,那么您可以为要返回的记录添加行号:
select group_id,
max(case when rownum = 1 then item_code end) item_code1,
max(case when rownum = 1 then item_label end) item_label1,
max(case when rownum = 1 then item_detail end) iitem_detail1,
max(case when rownum = 1 then item_score end) item_score1,
max(case when rownum = 2 then item_code end) item_code2,
max(case when rownum = 2 then item_label end) item_label2,
max(case when rownum = 2 then item_detail end) iitem_detail2,
max(case when rownum = 2 then item_score end) item_score2,
max(case when rownum = 3 then item_code end) item_code3,
max(case when rownum = 3 then item_label end) item_label3,
max(case when rownum = 3 then item_detail end) iitem_detail3,
max(case when rownum = 3 then item_score end) item_score3
from
(
select group_id, item_code, item_detail,
item_label, item_score,
@rn:=@rn+1 rownum
from yourtable, (SELECT @rn:=0) r
where group_id = 10
order by id
) src
group by group_id