簡體   English   中英

SQL GROUP BY多列?

[英]SQL GROUP BY multiple columns?

我有一張桌子,我需要按兩個不同的列對條目進行分組

這是我的代碼

SELECT *
    FROM (
        SELECT max(user_msg.id) AS mid, max(user_msg.timestamp) AS tsp, user_msg.text, 
        usr1.id AS u1_id, usr1.nickname AS u1_nickname, usr1.avatar AS u1_avatar, usr1.avatar_art AS u1_avatar_art, 
        usr2.id AS u2_id, usr2.nickname AS u2_nickname, usr2.avatar AS u2_avatar, usr2.avatar_art AS u2_avatar_art,
        COUNT(user_msg.id) AS cnt
        FROM user_msg 
        join user using (client_id)
        LEFT JOIN user AS usr1 ON user_msg.from_id=usr1.id
        LEFT JOIN user AS usr2 ON user_msg.to_id=usr2.id
        WHERE user_msg.to_id = '".$user_id."' AND to_delete='0' OR user_msg.from_id = '".$user_id."' AND to_delete='0'
        group by u1_id, u2_id ORDER by tsp DESC
    ) c 

它應該類似於u1_id和u2_id的分組

您需要使用原始列名,而不是別名。 它們還沒有被處理(嗯,在SQL Server中還不是:不確定MYSQL)。

...
   WHERE user_msg.to_id = '".$user_id."' AND to_delete='0' OR user_msg.from_id = '".$user_id."' AND to_delete='0'
  group by usr1.id, usr2.id
  ORDER by tsp DESC
...

編輯: MySQL允許在GROUP BY中使用別名

因此,我懷疑GROUP BY是錯誤和模棱兩可的,需要像下面的標准SQL一樣。 有或沒有別名

像這個問題: SQL查詢未顯示預期結果

[結束編輯]

注意,要制作此標准SQL(或在其他任何RDBMS上運行),您需要使用GROUP BY中所有不在匯總中的列:

    SELECT
       max(user_msg.id) AS mid, 
       max(user_msg.timestamp) AS tsp, 
       user_msg.text, 
       usr1.id AS u1_id, usr1.nickname AS u1_nickname, usr1.avatar AS u1_avatar, usr1.avatar_art AS u1_avatar_art, 
       usr2.id AS u2_id, usr2.nickname AS u2_nickname, usr2.avatar AS u2_avatar, usr2.avatar_art AS u2_avatar_art,
       COUNT(user_msg.id) AS cnt
    FROM user_msg 
    join user using (client_id)
    LEFT JOIN user AS usr1 ON user_msg.from_id=usr1.id
    LEFT JOIN user AS usr2 ON user_msg.to_id=usr2.id
    WHERE user_msg.to_id = '".$user_id."' AND to_delete='0' OR user_msg.from_id = '".$user_id."' AND to_delete='0'
    GROUP BY 
          user_msg.text, usr1.id, usr1.nickname, usr1.avatar, usr2.avatar_art,
          usr2.id, usr2.nickname, usr2.avatar, usr1.avatar_art
    ORDER by tsp DESC

暫無
暫無

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

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