簡體   English   中英

如果沒有GROUP BY子句,則將GROUP列(MIN(),MAX(),COUNT()等)混合在一起是非法的

[英]Mixing of GROUP columns (MIN(),MAX(),COUNT(),…) with no GROUP columns is illegal if there is no GROUP BY clause

我正在使用舊的php腳本,並且此查詢有錯誤。 由於我不熟悉mysql,因此無法修復。

"SELECT COUNT(p.postid) AS pid, p.*, t.* FROM ".TABLE_PREFIX."post AS p 
INNER JOIN ".TABLE_PREFIX."thread AS t ON (p.threadid = t.threadid) WHERE
p.username='".$uname."'" 

錯誤是

如果沒有GROUP BY子句,則將GROUP列(MIN(),MAX(),COUNT(),...)與GROUP列混合使用是非法的

我希望有一個人可以幫助我

就像錯誤所說的那樣,如果不顯式(使用GROUP BY)或隱式(僅通過選擇聚合)對行進行分組,就無法選擇COUNT等聚合函數。 用較少的技術術語來說-您要告訴數據庫“通過該用戶名查找所有帖子,它們屬於它們的線程,以及帖子的數量”,而數據庫正在回答您,“帖子的數量在什么?”。

因此,您需要更具體。 如果您真正想要的是:

  • 如果您實際上並不關心所有單獨的帖子,而只希望該線程和該用戶每個線程的帖子數,請從SELECT中刪除p.* ,然后將GROUP BY t.threadid添加到查詢。
  • 如果您想要發布的總數以及所有發布和主題,只需計算結果行即可。
  • 如果要選擇的線程中所有用戶的總帖子數,那會使查詢變得更加復雜,因為您需要再次加入post才能獲取總帖子數。
  • 如果您實際上根本不需要計數,請從查詢中將其刪除。 :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM