MySQL-এ একাধিক টেবিল থেকে ডেটা নিয়ে মোট রো সংখ্যা সীমাবদ্ধ করতে UNION ALL এবং সাবকোয়ারিতে LIMIT ব্যবহার করা হয়।
তিনটি টেবিল তৈরি
CREATE TABLE demo3 (value INT); INSERT INTO demo3 VALUES (10), (20), (30); CREATE TABLE demo4 (value1 INT); INSERT INTO demo4 VALUES (40), (10), (60); CREATE TABLE demo5 (value2 INT); INSERT INTO demo5 VALUES (100), (60), (50);
প্রতিটি টেবিল থেকে টপ-২ নিলে মোট টপ-২ (সাবকোয়ারি + UNION ALL + LIMIT)
mysql> SELECT tbl.* FROM (
-> (SELECT * FROM demo3 ORDER BY value DESC LIMIT 2)
-> UNION ALL
-> (SELECT * FROM demo4 ORDER BY value1 DESC LIMIT 2)
-> UNION ALL
-> (SELECT * FROM demo5 ORDER BY value2 DESC LIMIT 2)
-> ) tbl
-> LIMIT 2;
ফলাফল
+-------+ | value | +-------+ | 30 | | 20 | +-------+
ব্যাখ্যা: প্রতিটি টেবিল থেকে ডেসেন্ডিং অর্ডারে টপ-২ নেওয়া হয়েছে (demo3: 30,20; demo4: 60,40; demo5: 100,60)। UNION ALL দিয়ে জোড়ানো হয়েছে। আউটার LIMIT 2 দিয়ে মোট ২টি রো নেওয়া হয়েছে। যেহেতু demo3-এর 30, 20 সবচেয়ে ছোট, সেগুলো ফলাফলে এসেছে (অর্ডার বাই না থাকলে অনির্দিষ্ট)। সঠিক টপ-২ পেতে আউটার কোয়ারিতে ORDER BY value DESC যোগ করুন।