结合MySQL查询

结合MySQL查询,mysql,Mysql,我现在有一个查询,显示了这段时间内的所有通话,有没有一种方法可以将其格式化为在一个查询中显示第9-5天和第5-12天晚上 select dst, count(dst) as Day from cdr WHERE lastapp='Queue' AND Date(calldate) = '2012-03-23' AND TIME(calldate) BETWEEN '08:00' AND '17:00' GROUP BY dst; +------+-----+ | dst | Day

我现在有一个查询,显示了这段时间内的所有通话,有没有一种方法可以将其格式化为在一个查询中显示第9-5天和第5-12天晚上

select dst, count(dst) as Day from cdr 
WHERE lastapp='Queue' 
AND Date(calldate) = '2012-03-23' 
AND TIME(calldate) BETWEEN '08:00' AND '17:00' 
GROUP BY dst;

+------+-----+
| dst  | Day |
+------+-----+
| 1010 |  10 |
| 1011 |  21 |
| 1012 |   7 |
+------+-----+
理想情况下,我希望这样做,这样我就可以在PHP中的数组中获取它,而无需进行2次查询

+------+-----+-------+
| dst  | Day | Night |
+------+-----+-------+
| 1010 |  10 |  20   |
| 1011 |  21 |  12   | 
| 1012 |   7 |  4    |
+------+-----+-------+

对,;你可以这样写:

SELECT dst,
       COUNT(IF(TIME(calldate) BETWEEN '08:00' AND '17:00', 1, NULL)) AS Day,
       COUNT(IF(TIME(calldate) > '17:00', 1, NULL)) AS Night
  FROM cdr
 WHERE lastapp = 'Queue'
   AND DATE(calldate) = '2012-03-23'
 GROUP
    BY dst
;

计数。。。计算以下内容的行数。。。是非空的。IFboolean、value_if_true、value_if_false执行听起来像的操作-请看-尽管我应该提到它是一个特定于MySQL的函数。如果你没有明确地将你的问题标记为MySQL,我会建议使用boolean-THEN-value\u-If\u-true-ELSE-value\u-If\u-false-END,因为这是大多数或所有DMBSE支持的标准语法。

Perfect,我在玩类似的子查询,但你填补了空白。