2009-09-27 18 views
5

Noté queMySQL - El uso de la unión con LÍMITE

(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

el último límite del 10 no funciona. ¿por qué?

el error fue

"Código de error 1064: ... a utilizar cerca de 'LIMIT 1000'"

¿cómo es que el banco de trabajo MySQL detecta LÍMITE LÍMITE 10 como 1000, pero si su trabajo 1000 que todavía shld ?

Respuesta

4

Su consulta puede reescribirse utilizando subconsultas anidadas alias. Esto debería funcionar para usted:

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: que están mal escritas "relevancia" pero preservó la falta de ortografía por lo que la consulta sería trabajar.

+0

oh sí esto funciona. Por cierto, ¿es un error de Workbench? funciona cuando uso el programa de cliente mysql cmd. – iceangel89

Cuestiones relacionadas