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

กำหนดค่าตัวแปรจากผลลัพธ์ Query ใน MySQL

การเตรียมข้อมูล

mysql> CREATE TABLE DemoTable1864 (
    Id INT,
    FirstName VARCHAR(20),
    LastName VARCHAR(20)
);

mysql> INSERT INTO DemoTable1864 VALUES
    (101, 'Chris', 'Brown'),
    (102, 'David', 'Miller'),
    (103, 'Adam', 'Smith'),
    (104, 'John', 'Doe');

กำหนดค่าตัวแปรด้วย SELECT INTO

mysql> SELECT @fName := FirstName, @lName := LastName
    FROM DemoTable1864
    WHERE Id = 103;

ผลลัพธ์:

+-------------------+------------------+
| @fName := FirstName | @lName := LastName |
+-------------------+------------------+
| Adam              | Smith            |
+-------------------+------------------+

การใช้งานตัวแปรต่อไป

mysql> SELECT @fName, @lName;
+--------+--------+
| @fName | @lName |
+--------+--------+
| Adam   | Smith  |
+--------+--------+

หลักการสำคัญ

  • ตัวแปร User-Defined เริ่มต้นด้วย @ (เช่น @varName)
  • Scope: Session-level (หายเมื่อ Disconnect)
  • := ใช้สำหรับ Assignment ใน SELECT (แยกจาก = ใน SET)
  • ใน SET ใช้ = หรือ := ก็ได้

วิธีอื่น: SET กับ Subquery

-- ต้องคืนค่า 1 แถว 1 คอลัมน์
SET @fName = (SELECT FirstName FROM DemoTable1864 WHERE Id = 103);
SET @lName = (SELECT LastName FROM DemoTable1864 WHERE Id = 103);

กรณีใช้งานจริง

  • เก็บค่าระหว่าง Stored Procedure
  • ส่งค่าระหว่าง Query หลายขั้นตอน
  • Debug/Inspect ค่าระหว่างการทำงาน
  • Dynamic SQL ใน Prepared Statements

ข้อควรระวัง

  • Query ต้องคืนค่า 1 แถวเท่านั้น (Error ถ้าหลายแถว)
  • ใช้ LIMIT 1 ป้องกัน Error
  • ตัวแปรไม่ได้เป็น Transaction-safe