2009-09-27 3 views
5

ho notato cheMySQL - Usando UNION con 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

l'ultimo limite del 10 non funziona. perché?

l'errore è stato

"Codice di errore 1064: ... vicino a 'limite di 1000'"

come mai MySQL Workbench rileva LIMIT 10 come limite di 1000, ma se i suoi 1000 si lavori ancora shld ?

risposta

4

La query può essere riscritta utilizzando sottoquotazioni nidificate con alias. Questo dovrebbe funzionare per voi:

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: si scritto male "pertinenza", ma ho conservato l'errore ortografico in modo che la domanda avrebbe funzionato.

+0

oh sì, questo funziona. btw, è un bug del banco di lavoro? Funziona quando uso il programma client mysql cmd. – iceangel89