2009-09-27 10 views
5

के साथ संघ का उपयोग करते हुए मैं देखा है किMySQL - आप 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

पिछले सीमा 10 काम नहीं करता। क्यूं कर?

त्रुटि था

"त्रुटि कोड 1064: ... के पास 'limit 1000 उपयोग करने के लिए"

कैसे mysql कार्यक्षेत्र आ सीमा 10 से LIMIT 1000 का पता लगाता है, लेकिन अगर इसके 1000 यह shld काम अभी भी ?

उत्तर

4

आपकी क्वेरी को एलियाज्ड नेस्टेड सबक्वायरीज़ का उपयोग करके फिर से लिखा जा सकता है। यह आप के लिए काम करना चाहिए:

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 करें: यदि आप "प्रासंगिकता" गलत वर्तनी, लेकिन मैं गलत वर्तनी संरक्षित तो क्वेरी काम करेगा।

+0

ओह हाँ यह काम करता है। बीटीडब्ल्यू, वर्कबेंच बग है? यह काम करता है जब मैं mysql cmd क्लाइंट प्रोग्राम का उपयोग करता हूं। – iceangel89

संबंधित मुद्दे