我有這個疑問:我可以在Where子句中使用「虛擬列」嗎?
set @last_uid = 0;
set @last_tm = '00:00';
set @last_vid = 0;
SELECT v.*,
CASE WHEN @last_uid = visitorid AND cast(@last_tm as datetime) >= subtime(timestamp, '01:00')
THEN
if((@last_tm := timestamp), @last_vid, @last_vid)
ELSE
if((@last_uid := visitorid) + (@last_vid := @last_vid+1) +(@last_tm := timestamp),@last_vid, @last_vid)
END AS newVisitID
FROM visits v
ORDER BY timestamp DESC, visitorid
我試圖用newVisitID列在WHERE子句中是這樣的:
WHERE newVisitID <=5
這給我的錯誤:
#1054 - Unknown column 'newVisitID' in 'where clause'
任何人都可以幫我解決這個問題?
[在WHERE MySQL查詢的子句產生錯誤使用列別名]的可能重複(http://stackoverflow.com/questions/942571/using-column-alias-in-where-clause -of-mysql-query-produce-an-error) – GSerg