我想要發送者和接收者之間的發送者和接收者之間的最近創建日期,其中發送者或接收者= 002,然後由發送者和接收者分組。最後通知002的成員是發送者還是接收者。MYSQL由兩列的最大日期組
這只是一個示例數據。
表
id sender | receiver | create_date
1 001 002 2015-10-13 10:30:01
2 003 002 2015-11-06 15:30:59
3 001 002 2015-11-02 05:30:01
4 001 002 2015-11-03 11:08:22
5 002 004 2015-10-20 12:15:36
6 002 004 2015-11-03 17:35:10
7 002 005 2015-09-01 06:02:20
8 002 001 2015-11-06 15:10:32
結果應該是這樣的
id | member | type | create_date
2 003 sender 2015-11-06 15:30:59
6 004 receiver 2015-11-03 17:35:10
7 005 receiver 2015-09-01 06:02:20
8 001 receiver 2015-11-06 15:10:32
到目前爲止,我曾嘗試:
1)
SELECT
id,
IF(sender <> '002', sender, receiver) AS member,
IF(sender <> '002', 'sender', 'receiver') AS type,
MAX(create_date) AS max_date
FROM
table
WHERE
sender = '002' OR receiver = '002'
GROUP BY
member
這是我得到的結果。
id | member | type | create_date
1 001 sender 2015-11-06 15:10:32
2 003 sender 2015-11-06 15:30:59
5 004 receiver 2015-11-03 17:35:10
7 005 receiver 2015-09-01 06:02:20
我努力獲得最新的當前行,但create_date沒有問題。
2)我已經嘗試使用內連接以及。
SELECT
*
FROM
table a
INNER JOIN
(
SELECT
id,
MAX(create_date) as max_date
FROM
table
WHERE
sender = '002' OR receiver = '002'
) b ON b.max_date = a.create_date
這適用於檢索最新的行記錄。但是如果我需要使用最新的create_date檢索行,但是由發件人和收件人分組呢?
這是要走的路,如果您不需要'id'。 – vhu
@vhu真的,我錯過了。如果你想要這個ID,你必須做一個連接回來。如果該ID與創建日期的順序相同,則也可以採用max(id) – AdrianBR