2016-02-23 63 views
2

我目前使用4个查询来获取4个不同时间范围内发生的次数。mySQL查询获取多个时间帧

SELECT count(*) WHERE keyword='keyword' AND time>A AND time<B; 
SELECT count(*) WHERE keyword='keyword' AND type>B AND time<C; 
SELECT count(*) WHERE keyword='keyword' AND type>C AND time<D; 
SELECT count(*) WHERE keyword='keyword' AND type>D AND time<E; 

我觉得必须有一种方法可以将它们合并到一个查询中。有任何想法吗?

回答

3

一种更好的方式来查询

SELECT CASE 
     WHEN time > A AND time < B THEN 'A-B' 
     WHEN time > B AND time < C THEN 'B-C' 
     WHEN time > C AND time < D THEN 'C-D' 
     WHEN time > D AND time < E THEN 'D-E' 
     END, 
     Count(*) 
FROM yourtable 
WHERE keyword = 'keyword' 
     AND time > A 
     AND time < E 
GROUP BY CASE 
      WHEN time > A AND time < B THEN 'A-B' 
      WHEN time > B AND time < C THEN 'B-C' 
      WHEN time > C AND time < D THEN 'C-D' 
      WHEN time > D AND time < E THEN 'D-E' 
      END 
+0

结合@ user2648990 - 耶更新 –

0

您可以使用union

SELECT 'AB', count(*) WHERE keyword='keyword' AND time>A AND time<B; 
UNION 
SELECT 'BC', count(*) WHERE keyword='keyword' AND type>B AND time<C; 
UNION 
SELECT 'CD', count(*) WHERE keyword='keyword' AND type>C AND time<D; 
UNION 
SELECT 'DE', count(*) WHERE keyword='keyword' AND type>D AND time<E;