嘗試搜索類似的東西,但目前爲止沒有運氣。帶自定義值的MySQL GROUP BY
我有一個查詢在包含電話日誌(ID,號碼,來源和電話名稱)的表上執行。其目的是獲取電話名稱上按不同標準分組的電話總數(有四個或五個不同的標準)。目前我正在做這樣的事情:
SELECT COUNT(phones_statistics.id) AS number_of_calls, phones_statistics.calldate
FROM phones_statistics
INNER JOIN phones ON phones_statistics.phone_id = phones.id
WHERE phones.abbr NOT LIKE '@%'
GROUP BY
YEAR(phones_statistics.calldate)
+ '-'
+ MONTH(phones_statistics.calldate)
+ '-'
+ DAY(phones_statistics.calldate)
;
的問題,因爲你可能已經看到,是每個LIKE/NOT LIKE標準,我必須建立一個能與不同的標準另一個查詢,我猜這將很快變得討厭(目前有5個查詢,在返回結果之前總共運行20秒)。
所以我在想,是不是有一些簡單的方法通過構建一個自定義分組這樣避免多次查詢和做的伎倆:
SELECT
COUNT(phones_statistics.id) AS number_of_calls,
phones_statistics.calldate,
(something like a switch - 4 statements, 4 return values,
assigned to this field)
AS custom_field
...
rest of the query
...
GROUP BY custom_field,
YEAR(phones_statistics.calldate)
+ '-'
+ MONTH(phones_statistics.calldate)
+ '-'
+ DAY(phones_statistics.calldate)
謝謝你的代碼中找到另一種方式來做到這一點。我原本只是花了一年又一個月,後來又增加了一天(似乎我昨天太困了,不想記住'DATE'函數),但它仍然給了我一個字符串的日期,而不是一個數字。 除此之外,它的工作原理與它應該完全一樣,並且是一個整潔的方式。謝謝 :) – NorthBridge