Mysql 我需要在单个查询中合并三个where条件
我需要将三个查询合并到一个表结构中 Sql查询:Mysql 我需要在单个查询中合并三个where条件,mysql,sql,Mysql,Sql,我需要将三个查询合并到一个表结构中 Sql查询: SELECT MonthName(created) as Month ,year(created) as Year ,user_type,count(user_type) FROM `cii_registered_users` WHERE verification=1 AND activation_step=5 AND status=1 AND user_type='1' AND year(
SELECT MonthName(created) as Month ,year(created) as Year ,user_type,count(user_type)
FROM `cii_registered_users`
WHERE verification=1
AND activation_step=5
AND status=1
AND user_type='1'
AND year(created)='2017'
AND created > CURDATE() - INTERVAL 3 MONTH
GROUP BY user_type,month(created),year(created)
然后我需要单独的一行显示用户类型的所有计数和总计数,除了三个间隔和总计数
Month Year count(user_type=2) count(user_type=1) full year count
June 2017 12 3
July 2017 1 17
August 2017 10 8
September 2017 1 1
除了这四个月之外,我需要在另一列中输入总计数。这似乎是一个数据透视类查询的任务 试着这样做:
SELECT MONTH(created) as Month,
YEAR(created) as Year,
SUM(user_type = '1') user_type_1,
SUM(user_type = '2') user_type_2,
SUM(user_type = '3') user_type_3
FROM table
WHERE whatever
GROUP BY MONTH(created), YEAR(created)
为什么这样做有效?因为在MySQL中,像user\u type='1'
这样的表达式如果为true,则具有数字值1
,如果为false,则具有数字值0
为什么这是个好办法?阅读和验证并不难,需要时也不难更改
如果这是我的查询,我将不使用YEAR()
和MONTH()
,如下所示。但也许这只是个人喜好
SELECT LAST_DAY(created) AS month_ending,
...
GROUP BY LAST_DAY(created)
你尝试过什么,你的问题是什么?我需要两个三个sql查询,如果可能的话,这三个查询的区别是什么?我没有在条件用户类型为1,2,3,4.的情况下看到它。像这样,但我需要合并这三个查询(现在)的三个queryNotice仅在行
和user_type=something
中有所不同。如果可能的话,在一行中进行总计数之前,如果可能的话。就像在一行中进行总计数一样column@VallavanJ请不要滥用堆栈溢出作为聊天系统。不是。它也不是一个代码编写服务。我回答了你问的问题,然后你又补充了一些东西。为了获得最佳结果,找出如何将所学知识应用到问题中,然后尝试找出如何添加所需的其他列。如果你想不出来,再问另一个问题。我不是这样做的,我们需要用多种方法来提高我们的结果。谢谢你的回答
SELECT MONTH(created) as Month,
YEAR(created) as Year,
SUM(user_type = '1') user_type_1,
SUM(user_type = '2') user_type_2,
SUM(user_type = '3') user_type_3
FROM table
WHERE whatever
GROUP BY MONTH(created), YEAR(created)
SELECT LAST_DAY(created) AS month_ending,
...
GROUP BY LAST_DAY(created)