2

これは私のテーブルです

id | sender | receiver | msg  
-----------------------------
1  | jon    | jack     | buzz ...  
2  | jack   | jon      | ?  
3  | adel   | jon      | met me soon  
4  | jon    | adel     | okay  
5  | alex   | jon      | where ar u ?  
6  | jon    | adel     | okay  
7  | adel   | alex     | don't forget the party  
8  | jon    | jack     | may i borrow ur car 
9  | alex   | adel     | of course
10 | jack   | jon      | ok
11 | jack   | jon      | watch the gas
12 | alex   | jon      | i'm dying here
13 | jon    | alex     | 5 mnt ..

そして、私はこのような彼の友人とのジョンの最後のメッセージのリストを取得したい

id | sender | receiver | msg
-------------------------------------------
13 | jon    | alex     | 5 mnt ..
11 | jack   | jon      | watch the gas
6  | jon    | adel     | okay

その結果を得るために、どのようにクエリするのですか?

4

6 に答える 6

6

これを使って:

SELECT *
FROM table
WHERE id IN (
    SELECT MAX(id)
    FROM table
    WHERE sender = 'jon' 
       OR receiver = 'jon'
    GROUP BY IF(sender = "jon", receiver, sender)
) 
ORDER BY id DESC;

編集:編集ypercubeをありがとう、私は本当にここで重要な何かを忘れました:)

于 2012-07-11T07:58:51.753 に答える
3

これにより、必要なものが正確に返されます。

SELECT * FROM 
(SELECT * FROM `table` WHERE sender="jon" OR receiver="jon" ORDER BY id DESC) a 
GROUP BY IF(sender = "jon", receiver, sender) 
ORDER BY id DESC

初めて間違った答えをしてすみません、私は質問を注意深く読んでいなかったと思います。:(

テストは次のとおりです。

http://sqlfiddle.com/#!2/e66ac/2

于 2012-07-11T07:56:00.120 に答える
2
SELECT * FROM 
(SELECT * FROM tblA WHERE sender="jon" OR receiver="jon" ORDER BY id DESC) a 
GROUP BY IF(sender = "jon", receiver, sender) 

http://sqlfiddle.com/#!2/44099/1を参照してください

于 2012-07-11T08:13:57.890 に答える
1

これを試して::

SELECT * 
FROM table 
WHERE sender ='jon' OR receiver='jon' 
GROUP BY msg 
ORDER BY id desc
于 2012-07-11T07:56:14.273 に答える
0

私はあなたがこのようなものが必要だと思います:

SELECT * FROM my_table WHERE sender="jon" OR receiver="jon" ORDER BY id DESC

于 2012-07-11T07:58:05.183 に答える
-1

これは、ロジックに応じて変更できる単純なクエリです

SELECT * FROM tbl_enquiry WHERE id IN (
  SELECT Max(id) FROM tbl_enquiry WHERE date = '06/25/2015' GROUP BY cust_id 
) LIMIT 0 , 30
于 2015-06-26T07:23:11.290 に答える