Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

ใช้ UNION ALL สำหรับหลายเงื่อนไข WHERE พร้อม LIMIT ใน MySQL

บทนำ

เมื่อต้องการดึงข้อมูลด้วยเงื่อนไข WHERE หลายเงื่อนไข และจำกัดจำนวนแถว (LIMIT) สำหรับแต่ละเงื่อนไข สามารถใช้ตัวดำเนินการ UNION ALL เพื่อรวมผลลัพธ์จากหลายคำสั่ง SELECT เข้าด้วยกัน

ตัวอย่างการสร้างตารางและเพิ่มข้อมูล

mysql> CREATE TABLE DemoTable (
    -> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> Subject VARCHAR(100)
    -> );
Query OK, 0 rows affected (0.64 sec)
mysql> INSERT INTO DemoTable(Subject) VALUES('MySQL');
mysql> INSERT INTO DemoTable(Subject) VALUES('MySQL');
mysql> INSERT INTO DemoTable(Subject) VALUES('MongoDB');
mysql> INSERT INTO DemoTable(Subject) VALUES('MongoDB');
mysql> INSERT INTO DemoTable(Subject) VALUES('MySQL');
mysql> INSERT INTO DemoTable(Subject) VALUES('Java');
mysql> INSERT INTO DemoTable(Subject) VALUES('MySQL');
mysql> INSERT INTO DemoTable(Subject) VALUES('MongoDB');

แสดงข้อมูลทั้งหมด

mysql> SELECT * FROM DemoTable;

ผลลัพธ์

+----+---------+
| Id | Subject |
+----+---------+
| 1  | MySQL   |
| 2  | MySQL   |
| 3  | MongoDB |
| 4  | MongoDB |
| 5  | MySQL   |
| 6  | Java    |
| 7  | MySQL   |
| 8  | MongoDB |
+----+---------+
8 rows in set (0.00 sec)

คำสั่งสำหรับหลาย WHERE พร้อม LIMIT

mysql> (SELECT * FROM DemoTable WHERE Subject='MySQL' LIMIT 3)
    -> UNION ALL
    -> (SELECT * FROM DemoTable WHERE Subject='MongoDB' LIMIT 5);

ผลลัพธ์

+----+---------+
| Id | Subject |
+----+---------+
| 1  | MySQL   |
| 2  | MySQL   |
| 5  | MySQL   |
| 3  | MongoDB |
| 4  | MongoDB |
| 8  | MongoDB |
+----+---------+
6 rows in set (0.00 sec)

สรุป

การใช้ UNION ALL ช่วยให้สามารถกำหนด LIMIT แยกต่างหากสำหรับแต่ละเงื่อนไข WHERE ได้ ซึ่งมีประโยชน์เมื่อต้องการควบคุมจำนวนแถวที่ดึงมาจากแต่ละกลุ่มข้อมูล