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

กรองข้อมูลด้วย Alias ใน MySQL ใช้ HAVING แทน WHERE

บทความนี้สาธิตการกรองข้อมูลด้วย Alias (ชื่อสม المستعارของคอลัมน์คำนวณ) ใน MySQL โดยใช้ HAVING แทน WHERE เนื่องจาก WHERE ไม่สามารถอ้างอิง Alias ได้

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

mysql> CREATE TABLE DemoTable755(
    Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    Score1 INT, Score2 INT
);
Query OK, 0 rows affected (0.62 sec)

mysql> INSERT INTO DemoTable755(Score1, Score2) VALUES(30, 23), (50, 60), (89, 90), (99, 99), (40, 43);

คิวรีคำนวณผลรวมและกรองด้วย Alias ใน HAVING

mysql> SELECT Score1 + Score2 AS Result, DemoTable755.* 
FROM DemoTable755 
HAVING Result = 83;

ผลลัพธ์ (เฉพาะแถวที่ Score1+Score2 = 83)

+--------+----+--------+--------+
| Result | Id | Score1 | Score2 |
+--------+----+--------+--------+
| 83     | 5  | 40     | 43     |
+--------+----+--------+--------+

คำอธิบาย:

  • Score1 + Score2 AS Result - คำนวณผลรวมและตั้ง Alias เป็น Result
  • HAVING Result = 83 - กรองด้วย Alias (WHERE ไม่ทำได้)
  • HAVING ทำงานหลัง GROUP BY หรือหลัง Select List (ถ้าไม่มี GROUP BY จะทำงานเหมือน WHERE แต่รองรับ Alias)
  • MySQL อนุญาตให้ใช้ HAVING โดยไม่มี GROUP BY (Non-standard แต่สะดวก)

วิธีมาตรฐาน (Standard SQL): ใช้ Subquery หรือ CTE:

SELECT * FROM (
    SELECT Score1 + Score2 AS Result, * FROM DemoTable755
) t WHERE Result = 83;