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

คืนค่า ID ที่ NOT NULL จากแถวที่ตรงเงื่อนไขใน MySQL

ใช้เงื่อนไข IS NOT NULL ใน WHERE เพื่อกรองเฉพาะแถวที่คอลัมน์ ID มีค่า (ไม่ใช่ NULL) และตรงตามเงื่อนไขอื่นๆ

ตัวอย่างการสร้างตาราง

mysql> create table DemoTable ( 
    StudentId int, 
    StudentName varchar(100) ); 
Query OK, 0 rows affected (0.85 sec)

เพิ่มข้อมูล (มี StudentId เป็น NULL)

mysql> insert into DemoTable values(NULL,'Chris'); 
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values(NULL,'Robert'); 
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values(101,'David'); 
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values(102,'Mike'); 
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values(103,'Sam'); 
Query OK, 1 row affected (0.18 sec)

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

mysql> select * from DemoTable;
+-----------+-------------+
| StudentId | StudentName |
+-----------+-------------+
| NULL      | Chris       |
| NULL      | Robert      |
| 101       | David       |
| 102       | Mike        |
| 103       | Sam         |
+-----------+-------------+
5 rows in set (0.00 sec)

คำสั่งหา StudentId ของชื่อ David ที่ไม่เป็น NULL

mysql> select StudentId from DemoTable 
where StudentName = 'David' and StudentId IS NOT NULL;

ผลลัพธ์

+-----------+
| StudentId |
+-----------+
| 101       |
+-----------+
1 row in set (0.00 sec)

คำอธิบาย: เงื่อนไข StudentId IS NOT NULL สำคัญมาก เพราะใน MySQL การเปรียบเทียบ NULL = 'David' หรือ NULL != 'David' จะคืนค่า UNKNOWN (ไม่ใช่ TRUE/FALSE) ทำให้แถวที่มี NULL ถูกตัดออกโดยอัตโนมัติ แต่อย่างไรก็ตาม การระบุชัดเจนทำให้เจตนาชัดเจนและป้องกันบั๊ก