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

สร้างเงื่อนไขใน MySQL หลายคอลัมน์ด้วย IF() Function

ใช้ IF() Function สร้างเงื่อนไข Conditional Logic

IF(condition, true_value, false_value) ใช้ใน SELECT, WHERE, ORDER BY, SET ได้ คืนค่า true_value ถ้า condition เป็น TRUE มิฉะนั้น false_value

Syntax

IF(yourCondition, trueStatement, falseStatement);

ตัวอย่าง: คำนวณ Result ตาม Score

CREATE TABLE DemoTable612 (Number1 INT, Number2 INT, Score INT);

INSERT INTO DemoTable612 VALUES
(10, 20, 1000),
(30, 40, 500),
(50, 70, 1200),
(100, 120, 400);

Query: ถ้า Score > 500 ให้ คูณ Number1*Number2, ไม่อย่างนั้น บวก Number1+Number2

SELECT *, 
    IF(Score > 500, Number1 * Number2, Number1 + Number2) AS Result
FROM DemoTable612;

ผลลัพธ์:

+---------+---------+-------+--------+
| Number1 | Number2 | Score | Result |
+---------+---------+-------+--------+
| 10      | 20      | 1000  | 200    |  -- 10*20
| 30      | 40      | 500   | 70     |  -- 30+40 (500 ไม่ > 500)
| 50      | 70      | 1200  | 3500   |  -- 50*70
| 100     | 120     | 400   | 220    |  -- 100+120
+---------+---------+-------+--------+

IF() vs CASE WHEN

คุณสมบัติIF()CASE WHEN
จำนวนเงื่อนไข2 ทางเลือก (True/False)หลายเงื่อนไข (WHEN...THEN...ELSE)
Readabilityสั้น กวดขวางอ่านง่ายเมื่อ Logic ซับซ้อน
Nestedได้ (IF ใน IF) แต่ยากอ่านได้ (WHEN ต่อ WHEN)
Standard SQLMySQL SpecificANSI SQL (Portable)

ตัวอย่าง CASE WHEN (เทียบเท่า IF ข้างบน)

SELECT *,
    CASE 
        WHEN Score > 500 THEN Number1 * Number2
        ELSE Number1 + Number2
    END AS Result
FROM DemoTable612;

การใช้ IF() ใน UPDATE

UPDATE DemoTable612
SET Score = IF(Score > 500, Score * 1.1, Score * 1.05);

ข้อควรระวัง: NULL Handling

-- ถ้า condition เป็น NULL -> คืนค่า false_value
SELECT IF(NULL, 'yes', 'no');  -- 'no'

-- ใช้ IFNULL/COALESCE ก่อน IF
SELECT IF(IFNULL(score, 0) > 500, 'high', 'low');

ตัวอย่าง Advanced: Nested IF

SELECT 
    name,
    IF(score >= 90, 'A',
        IF(score >= 80, 'B',
            IF(score >= 70, 'C',
                IF(score >= 60, 'D', 'F')
            )
        )
    ) AS grade
FROM students;

แนะนำ: ใช้ CASE WHEN แทน Nested IF เพื่อความอ่านง่าย