2016-05-09 5 views
1

私はメッセージのテーブルを持っています、そして、以下は3行を示します - 第2と第3は2人の間にあります。MySQL - グループ異なる値を使用することによって

このテーブルをクエリしてGroup Byを使用すると、両方の行が表示されますが、1つだけ必要です。

SELECT a.receiver ORDER BY a.datetime DESC LIMIT 25; 

両方のユーザーが送信者/受信者となっているとき、1つの行の戻りを制限する方法はあります:

この

はクエリです。

ありがとうございます

+0

あなたは保存したいのですか? – 1000111

+0

実際、それは問題ではありません - 私は1セットのユーザーにつき1つの行が必要です。注意:時には行が1つしかない場合もあります(一人の人が書かれていれば)...それは一番嫌な人ですが、Order Byはそれを並べ替えるべきです。 – Adam

+0

編集のロールバックを改善する。最後の編集ですべての関連情報が失われました。 – 1000111

答えて

0

最初に大きい数字でグループ化し、小さいものでグループ化することができます。

SELECT 
    a.sender, 
    a.receiver, 
    a.message, 
    a. READ, 
    a.datetime 
FROM 
    messages AS a 
WHERE 
    (
     a.sender = '1000000000' 
     OR a.receiver = '1000000000' 
    ) 
GROUP BY IF(a.sender > a.receiver, a.sender, a.receiver), 
     IF(a.sender > a.receiver, a.receiver,a.sender) 
ORDER BY a.datetime DESC 
LIMIT 25; 

注:

最初IFは、より大きな数をピックアップし、もう一つは、より少ない数をピックアップ。

関連する問題