2009-09-27 65 views
5

我注意到,MySQL的 - 使用UNION與LIMIT

(SELECT title, relavency, 'search1' as source FROM search1 
ORDER BY relavency DESC 
LIMIT 10) 
UNION 
(SELECT title, relavency, 'search2' as source FROM search2 
ORDER BY relavency DESC 
LIMIT 10) 
ORDER BY relavency DESC 
LIMIT 10

最後LIMIT 10不起作用。爲什麼?

錯誤是

「錯誤代碼1064:...使用近 'LIMIT 1000'」

怎麼來的MySQL工作臺檢測限值10 LIMIT 1000,但如果1000是SHLD工作仍?

回答

4

您的查詢可以使用別名嵌套子查詢重寫。這應該爲你工作:

SELECT u.* FROM (
    (SELECT s1.title, s1.relavency, 'search1' as source FROM search1 AS s1 
    ORDER BY s1.relavency DESC 
    LIMIT 10) 
     UNION 
    (SELECT s2.title, s2.relavency, 'search2' as source FROM search2 AS s2 
    ORDER BY s2.relavency DESC 
    LIMIT 10) 
) AS u ORDER BY u.relavency DESC 
LIMIT 10

FYI:你拼錯的「相關性」,但我保留了拼寫錯誤,所以查詢會工作。

+0

哦,這是有效的。順便說一句,是一個工作臺錯誤?它適用於我使用mysql cmd客戶端程序。 – iceangel89 2009-09-27 03:13:07