mysql - बाएं शामिल होने की सीमा - mysql, sql

उदाहरण के लिए बाएं कहें कि मेरे पास निम्न क्वेरी है और इसे सीमित करना चाहते हैं left join एक टेबल पर, मैं इसे कैसे प्राप्त करूं?

SELECT * FROM Base
LEFT JOIN Derived1 ON Base.id = Derived1.id
LEFT JOIN Derived2 ON Base.id = Derived2.id
LEFT JOIN Derived3 ON (Base.id = Derived3.id WHERE Derived3.name LIKE "test%" LIMIT 5) <-----
WHERE Base.id = "someid";

मैंने सोचा कि मैं इसे इस तरह लिख सकता हूं:

SELECT * FROM Base
LEFT JOIN Derived1 ON Base.id = Derived1.id
LEFT JOIN Derived2 ON Base.id = Derived2.id
LEFT JOIN Derived3 ON Base.id = (
SELECT d3.id FROM Derived3 d3
WHERE d3.name LIKE "test%" AND Base.id = Derived3.id
LIMIT 5
)
WHERE Base.id = "someid";

लेकिन यह मुझे गलत परिणाम देता है

मैं अंदर मौजूद सभी डेटा चाहता हूँ Derived3 लेकिन केवल 5 आइटम अगर Derived.name बराबर है test 1, test 2, test 3 आदि। उस टेबल के अंदर 100 000 000 परीक्षण हो सकते हैं और कुछ हज़ार अन्य सामान जो शुरू नहीं होते हैं "test"

तो मूल रूप से, मुझे अंदर कुछ भी दे दो Derived3 और अधिकतम 5 पंक्तियां जो शुरू होती हैं "test"

मैं इसे कैसे हल करूं?

उत्तर:

जवाब के लिए 0 № 1

नीचे दी गई क्वेरी देखें।

SELECT *
FROM Base
LEFT JOIN Derived1 ON Base.id = Derived1.id
LEFT JOIN Derived2 ON Base.id = Derived2.id
LEFT JOIN Derived3 ON (
Base.id = Derived3.id
AND Derived3.id IN (
SELECT Derived3.id
FROM Derived3
WHERE Derived3.NAME LIKE "test%" LIMIT 5
)
)
WHERE Base.id = "someid"

जवाब के लिए 0 № 2

मुझे यकीन नहीं है कि यह आपके परिदृश्य में फिट हो सकता है लेकिन आप फ़िल्टर का उपयोग कर Derived3 से चुन सकते हैं LIKE "test%" और उपनाम का उपयोग कर चयन परिणाम में शामिल हों।

मेरे पास MySQL स्थापित करने के लिए इंस्टॉल नहीं है लेकिन इस तरह कुछ ऐसा करना चाहिए:

SELECT * FROM Base
LEFT JOIN Derived1 ON Base.id = Derived1.id
LEFT JOIN Derived2 ON Base.id = Derived2.id
LEFT JOIN (
SELECT d3.id FROM Derived3 d3
WHERE d3.name LIKE "test%"
LIMIT 5
) Derived3Alias ON Base.id = Derived3Alias.id
WHERE Base.id = "someid"
GROUP BY Base.id;

हो सकता है कि आपको "Derived3Alias ​​के रूप में" लिखने की आवश्यकता होगी, लेकिन बिना "ए" के पहले प्रयास करें, मुझे लगता है कि इसे काम करना चाहिए।


संबंधित सवाल
सबसे लोकप्रिय