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

กรองข้อมูลหลายคอลัมน์พร้อมกันด้วย Tuple Comparison ใน MySQL

ใช้ Tuple Comparison (col1, col2) = (val1, val2) ใน WHERE เพื่อกรองหลายคอลัมน์พร้อมกัน

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

mysql> CREATE TABLE DemoTable (
    Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    Name VARCHAR(10),
    Score INT
);
mysql> INSERT INTO DemoTable(Name, Score) VALUES
    ('John', 80), ('John', 90), ('Carol', 89),
    ('John', 86), ('Carol', 98), ('David', 99);

ดูข้อมูล

mysql> SELECT * FROM DemoTable;
+----+-------+-------+
| Id | Name  | Score |
+----+-------+-------+
|  1 | John  |    80 |
|  2 | John  |    90 |
|  3 | Carol |    89 |
|  4 | John  |    86 |
|  5 | Carol |    98 |
|  6 | David |    99 |
+----+-------+-------+

ค้นหา: (Name='John' AND Score=90) OR (Name='Carol' AND Score=98)

mysql> SELECT * FROM DemoTable
    -> WHERE (Name, Score) = ('John', 90) OR (Name, Score) = ('Carol', 98);

ผลลัพธ์

+----+-------+-------+
| Id | Name  | Score |
+----+-------+-------+
|  2 | John  |    90 |
|  5 | Carol |    98 |
+----+-------+-------+

ข้อดี: เขียนกระชับ อ่านง่าย ประสิทธิภาพดี (MySQL optimize ได้)

รองรับ IN ด้วย: WHERE (Name, Score) IN (('John', 90), ('Carol', 98))