2009-09-27 20 views
5

ile UNION kullanma iMySQL - 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

son SINIR 10 çalışmıyor fark ettim. niye ya?

hata

edildi "Hata kodu 1064: ... yakın 'LIMIT 1000' kullanmak" mysql tezgah gelip nasıl

LIMIT 1000 olarak SINIRLAMASINI 10 algılar, ama onun 1000 o r``sh çalışmaları ise halen ?

cevap

4

Sorgunuz, takma adı verilen iç içe yerleştirilmiş alt sorgular kullanılarak yeniden yazılabilir. Bu sizin için çalışması gerekir: Bilginize

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

: Eğer "alaka" yanlış yazılmış ama sorgu çalışacak yüzden yanlış yazımı korumuştur.

+0

oh evet bu çalışır. btw, bir Workbench hatası mı? mysql cmd istemci programını kullandığımda çalışır. – iceangel89