2017-10-04 9 views
1

私はこのクエリを持っていて値を表示しています。 '時間'は整数で、頻繁にクリックすると更新されます。ページがリフレッシュされるときにリストの一番上に表示されますが、そうではありません。グループ化がクエリに影響を与えるかどうか疑問です。私は最高値をリストの一番上に表示したい

+0

私は時間関数を使用していました。 – Arel

+1

割り当ての周りにかっこを入れると役立ちます。 ||割り当てよりも優先順位が高い。 – UndoingTech

+0

上記のクエリでは、conversation_idごとに1行しか表示されません。だから、conversation_idごとに1つの時間を取得します。 conversation_idでグループを使用して重複を排除していますか? – Valli

答えて

0

各会話の最新の時間を見つけるために、サブクエリ内の会話で集計を実行する必要があると思います。次に、messageテーブルに再び参加して、完全なメッセージレコードを取得します。あなたの注文に何が問題になったのか分かりませんが、現在のクエリは確定的ではありません。

SELECT m1.* 
FROM message m1 
INNER JOIN 
(
    SELECT conversation_id, MAX(time) AS max_time 
    FROM message 
    WHERE userid_to = '$UserLoggedIn' OR userid_from = '$UserLoggedIn' 
    GROUP BY conversation_id 
) m2 
    ON m1.conversation_id = m2.conversation_id AND 
     m1.time = m2.max_time 
ORDER BY 
    m1.time DESC; 
0

私は、このようにそれをやってみます:

SELECT *, MAX(time) as time 
FROM message 
WHERE userid_to = '$UserLoggedIn' OR userid_from = '$UserLoggedIn' 
GROUP BY conversation_id; 
+0

私はこのようにはしません。このクエリは、MySQLの特定の設定(または他のほとんどのデータベース)でも実行されないためです。 –

+0

標準設定のMySQL DB上で動作するはずです。どのような構成でこれがうまくいかないかを示すための例を提供できますか? – CodeGodie

+0

[ONLY_FULL_GROUP_BY](https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sqlmode_only_full_group_by)モードを調べてください。 –

関連する問題