คำอธิบาย
ใช้ IF(condition, true_value, false_value) ใน SELECT เพื่อคืนค่าข้อความตามเงื่อนไข
ขั้นตอนการสร้างตารางและข้อมูลตัวอย่าง
mysql> create table DemoTable (
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
EmployeeSalary int );
Query OK, 0 rows affected (1.68 sec)
การเพิ่มข้อมูล
mysql> insert into DemoTable(EmployeeSalary) values(12000); Query OK, 1 row affected (0.24 sec) mysql> insert into DemoTable(EmployeeSalary) values(20000); Query OK, 1 row affected (0.55 sec) mysql> insert into DemoTable(EmployeeSalary) values(11500); Query OK, 1 row affected (0.94 sec) mysql> insert into DemoTable(EmployeeSalary) values(15500); Query OK, 1 row affected (0.44 sec)
แสดงข้อมูลทั้งหมด
mysql> select * from DemoTable;
ผลลัพธ์:
+----+----------------+ | Id | EmployeeSalary | +----+----------------+ | 1 | 12000 | | 2 | 20000 | | 3 | 11500 | | 4 | 15500 | +----+----------------+ 4 rows in set (0.00 sec)
คิวรี่ IF เงื่อนไขเงินเดือน
mysql> select Id, if(EmployeeSalary <= 12000, 'Internship Employee', 'FullTime Employee') as status from DemoTable;
ผลลัพธ์
+----+---------------------+ | Id | status | +----+---------------------+ | 1 | Internship Employee | | 2 | FullTime Employee | | 3 | Internship Employee | | 4 | FullTime Employee | +----+---------------------+ 4 rows in set (0.00 sec)
คำอธิบาย
- เงินเดือน ≤ 12,000 → 'Internship Employee'
- เงินเดือน > 12,000 → 'FullTime Employee'
- IF() คืนค่าได้ทั้ง String, Number, Date
CASE WHEN (มาตรฐาน ANSI SQL, ยืดหยุ่นกว่า)
SELECT Id,
CASE
WHEN EmployeeSalary <= 12000 THEN 'Internship Employee'
WHEN EmployeeSalary <= 20000 THEN 'Junior Employee'
ELSE 'Senior Employee'
END as status
FROM DemoTable;
IF vs CASE
| คุณสมบัติ | IF() | CASE WHEN |
|---|---|---|
| จำนวนเงื่อนไข | 1 เงื่อนไข (True/False) | หลายเงื่อนไข |
| Standard | MySQL Specific | ANSI SQL |
| Nested | ได้ (แต่อ่านยาก) | ได้ (อ่านง่าย) |