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

MySQL: แก้ไข Error "SELECT ... , FROM table" - คอมมาตัวสุดท้าย

การแก้ไข Syntax Error จากคอมมา (Comma) ตัวสุดท้ายใน SELECT

Error 1064 เกิดจากการวางคอมมาต่อท้ายรายการคอลัมน์ ก่อนคำสั่ง FROM — MySQL ไม่รองรับ trailing comma ใน SELECT list

Error ที่พบ

mysql> select ClientId, ClientName, ClientAge, from DemoTable1391;
ERROR 1064 (42000): You have an error in your SQL syntax; 
check the manual ... near 'from DemoTable1391' at line 1

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

mysql> create table DemoTable1391 (
    -> ClientId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> ClientName varchar(20),
    -> ClientAge int
    -> );
Query OK, 0 rows affected (0.50 sec)

mysql> insert into DemoTable1391(ClientName, ClientAge) values('Chris', 21);
mysql> insert into DemoTable1391(ClientName, ClientAge) values('Bob', 23);
mysql> insert into DemoTable1391(ClientName, ClientAge) values('David', 24);
mysql> insert into DemoTable1391(ClientName, ClientAge) values('Mike', 28);

ข้อมูลในตาราง

+----------+------------+-----------+
| ClientId | ClientName | ClientAge |
+----------+------------+-----------+
| 1        | Chris      | 21        |
| 2        | Bob        | 23        |
| 3        | David      | 24        |
| 4        | Mike       | 28        |
+----------+------------+-----------+

คำสั่งที่ถูกต้อง (ลบคอมมาตัวสุดท้าย)

mysql> select ClientId, ClientName, ClientAge from DemoTable1391;

ผลลัพธ์

+----------+------------+-----------+
| ClientId | ClientName | ClientAge |
+----------+------------+-----------+
| 1        | Chris      | 21        |
| 2        | Bob        | 23        |
| 3        | David      | 24        |
| 4        | Mike       | 28        |
+----------+------------+-----------+

สรุปกฎ SELECT list

  • คั่นคอลัมน์ด้วยคอมมา ,
  • ห้าม วางคอมมาต่อท้ายคอลัมน์สุดท้ายก่อน FROM
  • บาง database อื่น (เช่น PostgreSQL, SQLite 3.38+) รองรับ trailing comma แล้ว แต MySQL ยังไม่รองรับ

เคล็ดลับป้องกัน

  • เขียนคอลัมน์แรกนำหน้า แล้วคอมมานำหน้าคอลัมน์ถัดไป (leading comma style):
    SELECT 
      ClientId
    , ClientName
    , ClientAge
    FROM DemoTable1391;
  • ใช้ IDE/Formatter ที่ตรวจจับ syntax error อัตโนมัติ
  • Copy-paste จากรายการคอลัมน์แล้วลบคอมมาตัวสุดท้าย