mysql条件输出列_mysql – 从单个列过滤条件创建多个列?

在此先感谢您的时间,我需要实现的是从单个查询生成多个列,事情是这样的:

我有一张桌子正在储存下一张:

id | user_id | revision

1 1 Approved

2 1 Rejected

3 1 Pending

4 1 Pending

5 1 Pending

我需要的是得到下一个结果:

Total | User | Pending | Rejected | Approved

5 1 3 1 1

我尝试过像这样使用Group:

SELECT count(id) Total, user_id User, revision FROM table1 GROUP BY user_id, revision

但是输出结果远远不是我想要得到的:

Total | User | revision

3 1 Pending

1 1 Rejected

1 1 Approved

我的想法是获得正确的对象返回,以避免服务器端代码过度循环不必要的进程,所以如果数据库可以在一次调用中进行处理,这将是很好的.

我试着谷歌搜索了几个小时,所有我能得到的是“多列单列”的结果很多,这是我不需要的,感谢你的帮助.

许多用户的最终结果集应如下所示:

Total | User | Pending | Rejected | Approved

5 1 3 1 1

5 2 4 0 1

5 7 2 3 0

这几乎是我需要的一些编辑之后,我仍然无法用固定的数字而不是百分比发送它,我缺乏工作组案例的知识,如果你们中的任何人都可以帮助它,我将继续努力,非常感谢.

嘿我设法做到这一点,这很容易,但我缺乏知识,我读到了MySQL Cookbook中的Genemented Summaries一章,这是他们解释你可以在查询中创建count,sum和其他方法的地方在您定义的那些列中获取正确的值,因此这是我最终使用的查询:

SELECT user_id as userid, count(id) Total,

COUNT(IF(revision = 'pending', 1, NULL)) as pending,

COUNT(IF(revision = 'approved', 1, NULL)) as approved,

COUNT(IF(revision = 'rejected', 1, NULL)) as rejected

FROM table1

GROUP BY user_id

只有满足条件时,才会按计数填充这些值.

解决方法:

我阅读了MySQL Cookbook中的Genemented Summaries一章,他们解释说你可以在查询中创建count,sum和其他方法,以便在你定义的那些列中获得正确的值,这称为统计查询,然后这就是查询我最终使用:

SELECT user_id as userid, count(id) Total,

COUNT(IF(revision = 'pending', 1, NULL)) as pending,

COUNT(IF(revision = 'approved', 1, NULL)) as approved,

COUNT(IF(revision = 'rejected', 1, NULL)) as rejected

FROM table1

GROUP BY user_id

只有满足条件时,才会按计数填充这些值.

标签:performance,mysql

来源: https://codeday.me/bug/20190806/1602444.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值