2009-09-27 15 views
5

zauważyłem, żeMySQL - Korzystanie z 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

ostatni LIMIT 10 nie działa. czemu?

błąd został

"Kod błędu 1064: ... używać w pobliżu 'LIMIT 1000'"

jak przyjść warsztatu mysql wykrywa granicę 10 jako LIMIT 1000, ale jeśli jego 1000 nadal pracować SHLD ?

Odpowiedz

4

Twoje zapytanie może zostać przepisane przy użyciu aliasów podkategorii zagnieżdżonych. To powinno działać dla Ciebie:

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: literówka „trafności”, ale zachował błąd ortograficzny tak kwerenda będzie działać.

+0

o tak, to działa. btw, czy jest błąd Workbencha? działa, gdy używam programu klienckiego mysql cmd. – iceangel89