這裏是我的查詢:如何在GROUP BY子句中使用別名?
SELECT SUM(score) score,
type,
context,
post_id,
e.table_code,
comment_id,
MIN(seen) seen,
MAX(date_time) d_t,
(CASE WHEN FROM_UNIXTIME(MAX(date_time)) >= CURDATE() THEN 'today'
WHEN FROM_UNIXTIME(MAX(date_time)) >= DATE_SUB(CURDATE(), INTERVAL 1 DAY) THEN 'yesterday'
WHEN FROM_UNIXTIME(MAX(date_time)) >= DATE_SUB(CURDATE(), INTERVAL 7 DAY) THEN 'in last week'
ELSE 'in last month'
END) as range_day
FROM `events` e
WHERE e.id IN ($ids)
GROUP BY type, post_id, e.table_code, comment_id, range_day
ORDER BY seen, MAX(date_time) desc, MAX(e.id) desc
它拋出這個錯誤:
#
1056 - Can't group on 'range_day'
如果我從GROUP BY
條款刪除range_day
,那麼它的工作原理也是如此。但我也需要根據range_day
對結果進行分組。我怎樣才能做到這一點?
'range_day'是計算列的別名。所以,它不能用於'group by'。改用實際計算。 –
重複你的情況,當在組中將作品 –
'range_day'是使用一個集合函數'MAX'來計算的。但是,您不能在group by子句中使用聚合函數。 –