首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

MySQL 子查詢必須指定別名:Every derived table must have its own alias

     編輯:程式設計疑難解答

錯誤:[Err] 1248 - Every derived table must have its own alias

問題 SQL

SELECT COUNT(*) FROM (
    SELECT t.mechno, COUNT(*)
    FROM (SELECT * FROM boc_payinfo WHERE ...) t, mp_merinfo m
    WHERE t.mechno = m.mechno GROUP BY t.mechno
)  -- 這裡缺少別名

修正

在最外層子查詢右括號後加別名:

SELECT COUNT(*) FROM (
    SELECT t.mechno, COUNT(*)
    FROM (SELECT * FROM boc_payinfo WHERE ...) t, mp_merinfo m
    WHERE t.mechno = m.mechno GROUP BY t.mechno
) AS tmp  -- 或 alias tmp

規則

  • MySQL 要求所有衍生表(子查詢、CTE、UNION 結果)必須有別名。
  • Oracle/PostgreSQL 允許無別名,MySQL 較嚴格。

最佳實務

  • 習慣給每個子查詢起有意義別名:daily_stats、merchant_join。
  • 使用 CTE (WITH ... SELECT) 可避免巢狀別名混亂(MySQL 8.0+ 支援)。

「子查詢右括號後必跟別名」養成肌肉記憶,避免 1248 錯誤。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved