2016-05-10 5 views
0

最後にsender_idまたはreceiver_id = 20を選択したいと思います。簡単な例を試してみましょう。MYSQL - 2列のdISTINCT値を選択

Table: 
sender_id receiver_id  created_time 
20   30    1 
30   20    2 
20   30    3 
20   40    4 
40   20    5 
20   20    6 
20   30    7 
50   60    9 

Result: 
sender_id receiver_id  created_time 
40   20    5 
20   30    7 
+0

SELECT *は、それまで存在し、よりでしょうか? – vegi

+2

'(20、20、6)'レコードはどうですか? –

答えて

0

このような何か:

SELECT LEAST(sender_id, receiver_id), 
     GREATEST(sender_id, receiver_id), 
     MAX(created_time) 
FROM mytable 
WHERE 20 IN (sender_id, receiver_id) 
GROUP BY LEAST(sender_id, receiver_id), 
     GREATEST(sender_id, receiver_id) 

上記のクエリは、エントリ(20, 20, 6)のための1つの追加のレコードを生成します。同じsender_idreceiver_idのレコードを排除する場合は、WHERE句に述語を追加できます。

0

このコード試してみてください。SENDER_ID = 20またはreceiver_id = 20表から

SELECT * FROM new_table AS t1 
WHERE 
(sender_id = 20 OR receiver_id = 20) 
AND 
(t1.created_time >= 
(SELECT MAX(created_time) FROM new_table WHERE sender_id = t1.sender_id) 
) 
関連する問題