Ich habe die folgenden drei Tabellen auszuwählen:fehlschlagen mit Zahl, Gruppe durch, um durch und Vereinigung in Mysql
theUser(*user_id*, user_name)
ichat(*message_id*, sender, receiver, send_time)
gchat(*message_id*, sender, receiver, send_time)
Der einzige Unterschied zwischen ichat und GChat ist, dass die receiver
in iChat Benutzer ist, und es ist Gruppe in gchat
. Aber es wirkt sich nicht auf diese Frage aus.
Jetzt möchte ich herausfinden, die aktivsten n
Benutzer (der Benutzername und die entsprechende Anzahl der Nachrichten gesendet), dh wer am häufigsten in sender
erscheint. Und nach der Code Ich habe versucht:
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(*)
bekam aber einen solchen Fehler:
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.
Haben Sie eine Ahnung davon haben? Vielen Dank im Voraus!
Probieren Sie 'count (*)' anstelle von 'count (totalM. *)' Count sollte das gleiche sein, oder? Da es sich um eine 1-1-Beziehung handelt, denke ich nicht, dass die Engine gerne versucht, Datensätze auf einer Seite eines Joins zu zählen. und Ihre Gruppe nach sollte mit der nicht aggregierten Spalte der Auswahl übereinstimmen. – xQbert