com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Not unique table/alias: 'emp'
MySQL 發現同一個查詢裡,同一張表被多次引用卻使用了相同的別名,或是 JOIN 時同一張表出現多次但未給予不同別名。例如:
-- ❌ 錯誤:emp 別名重複
SELECT * FROM emp e JOIN emp e ON e.deptno = e.deptno;
-- ✅ 正確:給不同別名
SELECT * FROM emp e1 JOIN emp e2 ON e1.deptno = e2.deptno;
e1、e2 不同別名。FROM、JOIN、子查詢中 emp 出現的次數與別名。emp e1、emp e2、emp m(主管)、emp s(下屬)等。entity-name、table、alias 設定。-- 原錯誤 SQL(假設)
String sql = "SELECT e.ename, m.ename AS mgr_name " +
"FROM emp e JOIN emp e ON e.mgr = e.empno"; // 別名重複
-- 修正後
String sql = "SELECT e.ename, m.ename AS mgr_name " +
"FROM emp e JOIN emp m ON e.mgr = m.empno"; // e=員工, m=主管
**「我的 SQL 沒問題」** 是最危險的預設。請直接在問題中貼出完整的 SQL 字串(含 Java 變數拼接部分),或是在資料庫客戶端直接執行該 SQL 觀察報錯位置。只要看到 Not unique table/alias,100% 是別名重複,改給唯一別名即可解決。