MYSQL SELECT SUM(IF()) CI框架使用SUM(IF())出错
来源:互联网 发布:ipad程序员必备app 编辑:程序博客网 时间:2024/06/05 03:14
mysql 中sum (if()) 用法:
举例一:
原表:
id fenlei date
1 分类1 20130316
2 分类2 20130316
3 分类3 20130317
4 分类2 20130317
5 分类3 20130318
需要查上表,得到结果插入新表,新表结构如下:
id fenlei_1 fenlei_2 fenlei_3 date
1 1 1 0 20130316
2 0 1 1 20130317
3 0 0 1 20130318
即要得到每个分类在每天各自消息数
select id,sum(if(fenlei='分类1',1,0 )) as fenlei_1, sum(if(fenlei='分类2',1,0 )) as fenlei_2, sum(if(fenlei='分类3',1,0 )) as fenlei_3, date
from 原表
group by date
(意思是如果fenlei='分类1',则 将1累加到fenlei_1上,否则将0累加到fenlei_1,即按日期统计分类1的有几条 )
举例二:
select sum(qty) as total_qty
from 表名
group by product_id
若qty有负值,则sum(qty)统计就会出现问题,此时用sum(if())就可以了。 SQL为:
select sum(if(qty > 0, qty, 0)) as total_qty (意思是如果qty > 0, 将qty的值累加到total_qty, 否则将0累加到total_qty.)
from 表名
group by product_id
(sum( if( qty < 0, 1, 0 )) as negative_qty_count 统计负值记录有多少条)
举例三:
积分榜:有两种礼物,礼物id=10312是1积分,礼物id=10316是10积分,按人统计积分并排榜,sql如下:
select sum( if(giftid = 10312, giftnum, giftnum * 10)) as total
from 表名
group by 用户id
注意:若使用Codeigniter框架,sum(if())报错问题
$this->gift_db->select('`send_uid` as `uid`, sum( if(giftid = 10312, `giftnum`, `giftnum` * 10)) as `total`')
->from('hd_send_gift_log_hotlive')
->where_in('giftid', array(10312, 10316))
->where('dt >=', $bdate)
->where('dt <=', $edate)
->where('partner_id', APP_PARTNER_ID)
->group_by('uid')
->order_by('total', 'DESC');
当执行上面代码时会出错,用last_query()打印出执行的sql语句,如下:
SELECT `send_uid` as `uid`, sum(if(giftid = 10312, `giftnum`,`giftnum*10))`as `total`
FROM `hd_send_gift_log_hotlive`
WHERE giftid IN(10312, 10316)
AND `dt` >= '2017-03-28 10:00:00' AND `dt` <= '2017-05-31 00:00:00'
AND `partner_id` = 126
GROUP BY `uid`
ORDER BY `total` DESC
如上可以看到:`giftnum*10))`,引号的位置有误,正确应该是`giftnum` *10))
解决办法:
$this->db->select('your Query', FALSE);
不加FALSE的效果:
SELECT `column1`, `column2` FROM table
加上FALSE的效果:
SELECT column1, column2 FROM table
即加上FALSE,则select里的字段在执行时不会在添加引号,即解决了上面CI框架使用sum(if())引号位置出错的问题- MYSQL SELECT SUM(IF()) CI框架使用SUM(IF())出错
- MySQL sum if 的使用
- mysql 中sum (if())
- mysql行转列(if + sum)
- mysql 中sum (if())
- mysql 中sum (if())
- MYSQL 函数 IF() 的使用 (MYSQL SUM IF)
- MYSQL COUNT/SUM IF/IFNULL 结合使用
- 关于mysql sum(if)的使用
- mysql 中sum (if()) 用法
- MYSQL中SUM字段按条件统计使用IF函数(case)
- 【mysql】 sum 与where if 组合的使用
- mysql sum(if())和count(if())的用法
- sql sum count if
- 一个sql的四种写法:sum...case.when、sum if、select(select..)、group by
- MYSQL--select if用法
- mysql select if
- MYSQL中有关SUM字段按条件统计使用IF函数(case)问题
- 最大流——Luogu2762 [网络流24题]太空飞行计划问题
- Android开发之--上传图片到七牛云存储
- TableLatyou仿58得点击展开选择框
- kafka gc日志导致比较累赘的低端线下测试环境磁盘被写满了的处理方案
- iOS开发 极光推送收到通知后跳转到指定页面
- MYSQL SELECT SUM(IF()) CI框架使用SUM(IF())出错
- Oculus关闭VR电影制作部门,却留下如此美好的作品
- JRE与JDK的区别
- 案例—新闻客户端
- Hibernate_day04
- auc
- 把RecyclerView撸成 马 蜂 窝
- iOS 获取网络图片的尺寸
- RSI指标详解图解