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

ใช้ Alias ในคำนวณ MySQL เพื่ออ้างอิงค่าที่คำนวณได้


การใช้ Alias ในคำนวณ (Subquery/Derived Table)

ใน MySQL ไม่สามารถอ้างอิง Alias ในระดับเดียวกันได้ (เช่น SELECT a+b AS c, c*2 จะ Error) ต้องใช้ Subquery หรือ Derived Table:

วิธีที่ 1: Subquery ใน SELECT

SELECT Id, 100 AS MyNumber, (SELECT MyNumber) * Id AS MultiplyWith100
FROM AliasDemo;

วิธีที่ 2: Derived Table (FROM Subquery)

SELECT Id, MyNumber, MyNumber * Id AS MultiplyWith100
FROM (
    SELECT Id, 100 AS MyNumber FROM AliasDemo
) AS t;

ตัวอย่างการใช้งาน

สร้างตารางและข้อมูล

CREATE TABLE AliasDemo (Id INT);
INSERT INTO AliasDemo VALUES (20), (30), (40);

คำสั่งใช้ Subquery ใน SELECT

SELECT Id, 100 AS MyNumber, (SELECT MyNumber) * Id AS MultiplyWith100
FROM AliasDemo;

ผลลัพธ์

+------+----------+-----------------+
| Id   | MyNumber | MultiplyWith100 |
+------+----------+-----------------+
| 20   | 100      | 2000            |
| 30   | 100      | 3000            |
| 40   | 100      | 4000            |

ใช้ Alias โดยไม่มีตาราง (Single Execution)

SELECT 100 AS MyNumber, (SELECT MyNumber) * 10 AS MultiplyWith100;
+----------+-----------------+
| MyNumber | MultiplyWith100 |
+----------+-----------------+
| 100      | 1000            |
+----------+-----------------+

ข้อจำกัดของ Alias ใน MySQL

  • ไม่สามารถใช้ Alias ใน WHERE, GROUP BY, HAVING ระดับเดียวกันได้
  • สามารถใช้ใน ORDER BY, GROUP BY (MySQL อนุญาต), HAVING
  • ต้องใช้ Subquery/CTE หากต้องการนำ Alias ไปคำนวณต่อ

แนะนำ: ใช้ CTE (MySQL 8.0+)

WITH calculated AS (
    SELECT Id, 100 AS MyNumber FROM AliasDemo
)
SELECT Id, MyNumber, MyNumber * Id AS MultiplyWith100
FROM calculated;