別名是當您重命名某些內容時,如SELECT t.time from table t
,t
是該表的別名。在這種情況下,你需要給一個別名由子查詢產生的表:
SELECT MAX(ut.DateTime)
FROM (
(
SELECT DateTime
FROM Class_Searches
) cs
UNION ALL (
SELECT DateTime
FROM Book_Searches
) bs
) ut
WHERE User_Email = '[email protected]'
AND ut.DateTime > NOW() - INTERVAL 30 DAY
這仍然無法工作,雖然,因爲你沒有一個USER_EMAIL列從UNION返回。因此,請嘗試:
SELECT MAX(ut.DateTime)
FROM (
(
SELECT DateTime, User_Email
FROM Class_Searches
) cs
UNION ALL (
SELECT DateTime, User_Email
FROM Book_Searches
) bs
) ut
WHERE ut.User_Email = '[email protected]'
AND ut.DateTime > NOW() - INTERVAL 30 DAY
由於UNION語法,這可能仍然不能正常工作,但至少它離得更近。
我得到這個錯誤與第二個查詢: #1064 - 你的SQL語法有錯誤;檢查與您的MySQL服務器版本相對應的手冊,以找到在'bs '附近使用的正確語法。ut WHERE ut.User_Email ='[email protected]h.com' AND ut.DateTime> NOW() - INTER'在第10行 – babonk 2010-08-08 21:03:27