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

Oracle 表自連接查詢導致重複列消除:顯式指定選項列而非 SELECT *

     編輯:程式設計綜合問答

問題 SQL

SELECT * FROM (
    (SELECT t_date, COUNT(*) 勝 FROM t GROUP BY t_status, t_date HAVING T_STATUS='勝') a
    INNER JOIN (SELECT t_date, COUNT(*) 負 FROM t GROUP BY t_status, t_date HAVING T_STATUS='負') b
    ON a.t_date = b.t_date
);

結果包含兩列 t_date (a.t_date, b.t_date)。

修正 SQL

SELECT a.t_date, a.勝, b.負 FROM (
    (SELECT t_date, COUNT(*) 勝 FROM t GROUP BY t_status, t_date HAVING T_STATUS='勝') a
    INNER JOIN (SELECT t_date, COUNT(*) 負 FROM t GROUP BY t_status, t_date HAVING T_STATUS='負') b
    ON a.t_date = b.t_date
);

最佳實踐

  • **永遠不使用 SELECT *** 在生產代碼中,顯式列出所需列。
  • 使用表別名 (a, b) 限定列名,消除歧義。
  • 若列名相同需同時保留,使用別名:a.t_date AS date_a, b.t_date AS date_b。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved