我有以下三個表:失敗在MySQL
theUser(*user_id*, user_name)
ichat(*message_id*, sender, receiver, send_time)
gchat(*message_id*, sender, receiver, send_time)
的iChat和Google即時通訊之間的唯一區別是,在iChat中receiver
是用戶,它是組gchat
。但是這個問題沒有影響。
現在我想找出最活躍的n
用戶(用戶名和發送的相應消息數),這意味着誰出現頻率最高的是sender
。而下面是代碼,我曾嘗試:
SELECT COUNT(totalM.*) AS msge, u.name
FROM (
SELECT * FROM gchat
UNION ALL
SELECT * FROM ichat) AS totalM
JOIN theUser u ON totalM.sender=u.user_id
GROUP BY totalM.sender
ORDER BY COUNT(*)
,但得到這樣的錯誤:
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '*) AS msge, u.name.
你有任何想法?先謝謝你!
嘗試'count(*)'而不是'count(totalM。*)'計數應該是一樣的嗎?因爲它是1-1關係,我不認爲引擎喜歡試圖在連接的一邊計算記錄。並且您的組應與選擇的非聚合列匹配。 – xQbert