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

การ Query ด้วย AND OR ใน MySQL

ตัวอย่างการใช้ 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

ABA AND BA OR B
TTTT
TFFT
FTFT
FFFF