2016-02-23 77 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;