在mysql中按列分组

时间:2016-01-09 01:03:13

标签: mysql

我有以下数据

item    category    accounts
ITEM1   CATEGORY1   ACCOUNT1
ITEM2   CATEGORY1   ACCOUNT1
ITEM3   CATEGORY2   ACCOUNT2
ITEM4   CATEGORY2   ACCOUNT2
ITEM5   CATEGORY3   ACCOUNT3
ITEM6   CATEGORY3   ACCOUNT3

并且想知道什么是更好的方式,所以我可以像

那样输出它
item    category    accounts
ITEM1   CATEGORY1   ACCOUNT1
ITEM2   CATEGORY1   
ITEM3   CATEGORY2   ACCOUNT2
ITEM4   CATEGORY2   
ITEM5   CATEGORY3   ACCOUNT3
ITEM6   CATEGORY3   

我尝试过使用UNION:

SELECT 
item,
category,
account

FROM t1

UNION

SELECT NULL,NULL,account from t1

但我得到的结果是

item    category    accounts
ITEM1   CATEGORY1   ACCOUNT1
ITEM2   CATEGORY1   ACCOUNT1
ITEM3   CATEGORY2   ACCOUNT2
ITEM4   CATEGORY2   ACCOUNT2
ITEM5   CATEGORY3   ACCOUNT3
ITEM6   CATEGORY3   ACCOUNT3
NULL    NULL        ACCOUNT1
NULL    NULL        ACCOUNT2
NULL    NULL        ACCOUNT3

有关如何使其成为可能的任何建议吗?谢谢

1 个答案:

答案 0 :(得分:0)

你可以这样做:

SELECT @acct := null;
SELECT item, category, (if(@acct = account, '', @acct := account)) account FROM items;

但我不建议这样做,除非是为了更方便地查看mysql cli工具的结果。 (您可能还想调整选择查询并指定适当的ORDER BY。)