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

คำสั่ง MySQL กับเงื่อนไข OR และ AND ร่วมกัน

บทนำ

การรวมเงื่อนไข OR และ AND ในคำสั่ง WHERE ต้องคำนึงถึงลำดับความสำคัญของตัวดำเนินการ (Operator Precedence) โดย AND จะถูกประเมินก่อน OR เสมอ

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

mysql> CREATE TABLE DemoTable (
    -> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> Name VARCHAR(20),
    -> Age INT
    -> );
Query OK, 0 rows affected (0.63 sec)
mysql> INSERT INTO DemoTable(Name, Age) VALUES('John', 21);
mysql> INSERT INTO DemoTable(Name, Age) VALUES(NULL, 20);
mysql> INSERT INTO DemoTable(Name, Age) VALUES('David', 23);
mysql> INSERT INTO DemoTable(Name, Age) VALUES('Carol', NULL);

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

mysql> SELECT * FROM DemoTable;

ผลลัพธ์

+----+-------+------+
| Id | Name  | Age  |
+----+-------+------+
| 1  | John  | 21   |
| 2  | NULL  | 20   |
| 3  | David | 23   |
| 4  | Carol | NULL |
+----+-------+------+
4 rows in set (0.00 sec)

คำสั่งกับเงื่อนไข OR และ AND

mysql> SELECT * FROM DemoTable
    -> WHERE Name='David' OR (Name IS NULL AND Age=20);

ผลลัพธ์

+----+-------+------+
| Id | Name  | Age  |
+----+-------+------+
| 2  | NULL  | 20   |
| 3  | David | 23   |
+----+-------+------+
2 rows in set (0.00 sec)

คำอธิบาย

คำสั่งนี้จะเลือกแถวที่:

  • Name เป็น 'David' หรือ
  • Name เป็น NULL และ Age เป็น 20

สังเกตการใช้วงเล็บ (Name IS NULL AND Age=20) เพื่อกำหนดลำดับการประเมินผลให้ชัดเจน