Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 我需要在单个查询中合并三个where条件_Mysql_Sql - Fatal编程技术网

Mysql 我需要在单个查询中合并三个where条件

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(

我需要将三个查询合并到一个表结构中

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(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)