สร้างตารางและข้อมูลตัวอย่าง
mysql> create table DemoTable2008 ( Value int );
mysql> insert into DemoTable2008 values(10);
mysql> insert into DemoTable2008 values(20);
mysql> insert into DemoTable2008 values(30);
mysql> insert into DemoTable2008 values(-31);
mysql> insert into DemoTable2008 values(-28);
ข้อมูลในตาราง
+-------+
| Value |
+-------+
| 10 |
| 20 |
| 30 |
| -31 |
| -28 |
+-------+
ขั้นตอน: User Variable + IF
- คำนวณ SUM แล้วเก็บใน User Variable
@value
- ใช้
IF() ตรวจสอบเงื่อนไข แล้วแสดงข้อความ
mysql> set @value := (select sum(Value) from DemoTable2008); Query OK, 0 rows affected (0.03 sec)
mysql> select if(@value > 0, 'Value is greater than 0', 'Not greater than') as Result;
ผลลัพธ์
+-------------------------+
| Result |
+-------------------------+
| Value is greater than 0 |
+-------------------------+
การคำนวณ
- SUM = 10 + 20 + 30 + (-31) + (-28) = 1
- 1 > 0 → TRUE → แสดง 'Value is greater than 0'
User-Defined Variables ใน MySQL
- ขึ้นต้นด้วย
@ (เช่น @value, @my_var)
- Scope: Session (Connection) - หายเมื่อ Disconnect
- ไม่ต้อง DECLARE ใช้ได้ทันที
- Type ถูก Infer อัตโนมัติจากค่าที่ Assign
รูปแบบ CASE WHEN (Standard SQL)
SELECT CASE
WHEN @value > 0 THEN 'Value is greater than 0'
WHEN @value = 0 THEN 'Value is zero'
ELSE 'Value is negative'
END AS Result;
การใช้งานใน Stored Procedure
CREATE PROCEDURE CheckSumStatus()
BEGIN
DECLARE total INT;
SELECT SUM(Value) INTO total FROM DemoTable2008;
IF total > 0 THEN
SELECT 'Positive' AS Status;
ELSEIF total = 0 THEN
SELECT 'Zero' AS Status;
ELSE
SELECT 'Negative' AS Status;
END IF;
END;
ข้อดีของ User Variables
- ส่งค่าระหว่าง Statements ได้ (SELECT → UPDATE → SELECT)
- ใช้ใน Prepared Statements ได้
- Debug ง่าย:
SELECT @var; ดูค่าได้ทันที