解碼 SQL 的 GROUP BY 子句中的 ORA-00979 錯誤
當您的查詢使用 GROUP BY
但在 SELECT
清單中包含未分組或聚合的欄位時,就會出現這種常見的 SQL 錯誤 ORA-00979(「不是 GROUP BY 表達式」)。 讓我們探討一下如何解決這個問題。
核心問題在於SELECT
和GROUP BY
子句不符。 GROUP BY
將具有符合值的行合併到群組中。 SELECT
語句中的每一列必須:
-
出現在
GROUP BY
子句中: 這確保每個選定的值都直接與一個群組關聯。 -
聚合: 使用
MIN()
、MAX()
、SUM()
、AVG()
、COUNT()
等函數來總結每組內的數值。
說明性範例
想像一張有約會的桌子:
Appointment ID (appt_id) | Patient Name (patient) | Doctor (doctor) |
---|---|---|
1 | Alice | Dr. Smith |
2 | Bob | Dr. Smith |
3 | Charlie | Dr. Jones |
錯誤查詢:
SELECT appt_id, patient, doctor FROM appointments GROUP BY doctor;
這將失敗並出現 ORA-00979,因為 appt_id
和 patient
未分組。
正確方法
- 包含
GROUP BY
中的所有非聚合欄位:
SELECT doctor, COUNT(*) FROM appointments GROUP BY doctor;
這計算每位醫生的預約。
- 使用聚合函數:
SELECT doctor, COUNT(*) AS appointment_count, MIN(appt_id) AS first_appointment FROM appointments GROUP BY doctor;
這會計算預約並找到每位醫生的最小預約 ID。
關鍵是要確保分組標準和所選資料之間的關係一致。 使用聚合函數可以匯總組內的數據,避免 ORA-00979 錯誤。
以上是為什麼我的 SQL 查詢產生 ORA-00979:不是 GROUP BY 表達式?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本文討論了使用MySQL的Alter Table語句修改表,包括添加/刪除列,重命名表/列以及更改列數據類型。

文章討論了為MySQL配置SSL/TLS加密,包括證書生成和驗證。主要問題是使用自簽名證書的安全含義。[角色計數:159]

文章討論了流行的MySQL GUI工具,例如MySQL Workbench和PhpMyAdmin,比較了它們對初學者和高級用戶的功能和適合性。[159個字符]

本文討論了使用Drop Table語句在MySQL中放下表,並強調了預防措施和風險。它強調,沒有備份,該動作是不可逆轉的,詳細介紹了恢復方法和潛在的生產環境危害。

本文討論了在PostgreSQL,MySQL和MongoDB等各個數據庫中的JSON列上創建索引,以增強查詢性能。它解釋了索引特定的JSON路徑的語法和好處,並列出了支持的數據庫系統。

文章討論了使用準備好的語句,輸入驗證和強密碼策略確保針對SQL注入和蠻力攻擊的MySQL。(159個字符)


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

SublimeText3漢化版
中文版,非常好用

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

Dreamweaver Mac版
視覺化網頁開發工具