送信者または受信者= 002の送信者と受信者の間で最新の作成日を取得し、次に送信者と受信者によってグループ化します。最後にメンバーが送信者か受信者かを002で確認してください。MYSQL最大2つの列の日付グループ
これは単なるサンプルデータです。
テーブル
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)
これは私が最後に得た結果です。
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 true、私はそれを逃した。 IDが必要な場合は、これに戻って参加する必要があります。 IDが作成日と同じ順番になっている場合は、max(id)も使用できます – AdrianBR