2009-09-27 12 views
5

Ich bemerkte, dassMySQL - Verwendung von UNION mit 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

das letzte LIMIT 10 nicht funktioniert. Warum?

der Fehler

"Fehlercode 1064: ... in der Nähe von '1000 LIMIT' verwenden" wurde

wie MySQL Workbench kommen erkennt LIMIT 10 als LIMIT 1000, aber wenn sie 1000 es shld Arbeit noch ?

Antwort

4

Ihre Abfrage kann mithilfe von Alias-verschachtelten Unterabfragen umgeschrieben werden. Dies sollte für Sie arbeiten:

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: Sie falsch geschrieben „Relevanz“ aber ich erhalten die falsche Schreibweise so die Abfrage funktionieren würde.

+0

oh ja das funktioniert. Übrigens, ist es ein Workbench Bug? Es funktioniert, wenn ich das MySQL Client-Programm verwende. – iceangel89