2017-01-18 19 views
0

ペア(送信者、受信者)のIDが最も高い拒否行を選択するためのクエリは、どの列の取得列にもなります。2つの列に最大のIDを取得するクエリ

Select * from `message` where _id IN (Select max(_id) from 
`message` GROUP BY sender,receiver); 

OR

クエリ:

Select * from `message` where _id IN (Select max(_id) from 
`message` GROUP BY receiver,sender); 
(送信者、受信者)または(受信機、送信者)

私のテーブルデータ

_id  sender receiver date  message 
1  rohan deepak 17-01-17 hell 
2  rohan deepak 18-01-17 hello 
3  deepak rohan  18-01-17 had i done 
4  anand shivam 20-01-16 joke 

クエリです :3210は

_id  sender receiver date  message 
1  rohan deepak 17-01-17 hello 
3  deepak rohan  18-01-17 had i done 
4  anand shivam 20-01-16 joke 

ID 1 & 3は、同じ組であるが、私は2列の代わりに、ペアの1(ロハン、ディーパック)

を得るように、それは私のように出力を必要と異なる最大_idを与え、ここで参照してくださいを与えます3,4として

_id  sender receiver date  message 
3  deepak rohan  18-01-17 had i done 
4  anand shivam 20-01-16 joke 

だから、誰もがこれを取得するために私を助けることができるユニークなペア

マックス(_id)です。

答えて

0

その最も効率的なわからない、しかし、あなたはUNIONで二回あなたのテーブルを呼び出し、注文-receiver送信者を変更することができます。

Select * from `message` where _id IN (
    Select max(_id) from (
    Select _id, sender, receiver from `message` 
    UNION 
    Select _id, receiver, sender from `message` 
) GROUP BY receiver,sender 
); 

同様に私のために働いたが、私はOracleを使用します。あなたの側で少しチューニングが必要な場合があります。

関連する問題