ตัวอย่างการใช้ AND และ OR ร่วมกันในเงื่อนไข WHERE
สร้างตารางตัวอย่าง
mysql> create table DemoTable (
StudentId int,
StudentName varchar(20),
StudentSubject varchar(20) );
Query OK, 0 rows affected (0.62 sec)
เพิ่มข้อมูลตัวอย่าง
mysql> insert into DemoTable values(10,'Chris','MongoDB'); Query OK, 1 row affected (0.21 sec) mysql> insert into DemoTable values(11,'David','MySQL'); Query OK, 1 row affected (0.22 sec) mysql> insert into DemoTable values(12,'Bob','Java'); Query OK, 1 row affected (0.10 sec) mysql> insert into DemoTable values(10,'Carol','MySQL'); Query OK, 1 row affected (0.51 sec) mysql> insert into DemoTable values(10,'Chris','MongoDB'); Query OK, 1 row affected (0.20 sec) mysql> insert into DemoTable values(14,'David','MySQL'); Query OK, 1 row affected (0.12 sec)
แสดงข้อมูลทั้งหมด
Mysql> select *from DemoTable;
+-----------+-------------+----------------+ | StudentId | StudentName | StudentSubject | +-----------+-------------+----------------+ | 10 | Chris | MongoDB | | 11 | David | MySQL | | 12 | Bob | Java | | 10 | Carol | MySQL | | 10 | Chris | MongoDB | | 14 | David | MySQL | +-----------+-------------+----------------+ 6 rows in set (0.00 sec)
คิวรี่: (StudentName = 'David' AND StudentSubject = 'MySQL') OR StudentId = 11
mysql> select *from DemoTable where StudentName='David' and StudentSubject='MySQL' OR StudentId=11;
ผลลัพธ์:
+-----------+-------------+----------------+ | StudentId | StudentName | StudentSubject | +-----------+-------------+----------------+ | 11 | David | MySQL | | 14 | David | MySQL | +-----------+-------------+----------------+ 2 rows in set (0.00 sec)
ลำดับความสำคัญของ Operator (Precedence)
ANDมี precedence สูงกว่าOR- คิวรี่ด้านบรรทัดเทียบเท่ากับ:
(StudentName='David' AND StudentSubject='MySQL') OR StudentId=11 - ควรใช้วงเล็บ
()เพื่อความชัดเจนเสมอ
ตัวอย่างเพิ่มเติม
-- หา David ที่เรียน MySQL หรือ Chris ที่เรียน MongoDB
WHERE (StudentName='David' AND StudentSubject='MySQL')
OR (StudentName='Chris' AND StudentSubject='MongoDB')
-- ใช้ IN() แทน OR หลายตัว
WHERE StudentName IN ('David', 'Chris') AND StudentSubject IN ('MySQL', 'MongoDB')
Truth Table สำหรับ AND/OR
| A | B | A AND B | A OR B |
|---|---|---|---|
| T | T | T | T |
| T | F | F | T |
| F | T | F | T |
| F | F | F | F |