加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – MySQL查询和子查询

发布时间:2020-12-13 17:48:54 所属栏目:PHP教程 来源:网络整理
导读:我有这样的查询: SELECT SUM(price) AS GINTO,( (SELECT COUNT(price)*9.99 FROM sms_logs WHERE price = '200000')+ (SELECT COUNT(price)*3.99 FROM sms_logs WHERE price = '60000')+ (SELECT COUNT(price)*1.99 FROM sms_logs WHERE price = '24000')+
我有这样的查询:

SELECT SUM(price) AS GINTO,(
   (SELECT COUNT(price)*9.99 FROM sms_logs WHERE price = '200000')+
   (SELECT COUNT(price)*3.99 FROM sms_logs WHERE price = '60000')+
   (SELECT COUNT(price)*1.99 FROM sms_logs WHERE price = '24000')+
   (SELECT COUNT(price)*0.99 FROM sms_logs WHERE price = '11000')
) AS USD,DATE_FORMAT(DATE,'%Y-%m-%d') AS DATE FROM sms_logs 
WHERE DATE >='2015-03-20' AND DATE <= '2015-04-30'
GROUP BY DATE_FORMAT(DATE,'%Y-%m-%d')

我想要显示数据为:

GINTO  ||   USD  ||   DATE
2222000 ||   200  || 2015-03-23
3366000 ||   300  || 2015-03-24
11000   ||   10   || 2015-03-25

但结果与该查询:

GINTO  ||   USD ||   DATE
2222000 || 284.65|| 2015-03-23
3366000 || 284.65|| 2015-03-24
11000   || 284.65|| 2015-03-25

在USD列中显示所有记录的摘要.为什么?

解决方法

您的计数调用在单独的查询中运行,没有group by子句,因此无论“主”查询的goruping如何,它们都应用于整个表.解决这个问题的一种方法是摆脱子查询并将它们带入“主”查询:

SELECT   SUM(price) AS GINTO,SUM(CASE price WHEN '200000' THEN 9.99
                        WHEN '60000'  THEN 3.99
                        WHEN '24000'  THEN 1.99
                        WHEN '11000'  THEN 0.99
              END) AS usd,DATE_FORMAT(date,'%Y-%m-%d') AS date 
FROM     sms_logs 
WHERE    date >='2015-03-20' AND date <= '2015-04-30'
GROUP BY DATE_FORMAT(date,'%Y-%m-%d')

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读