私は以下のサンプルのようなテーブルを持っています。私は、ステータス0を持つすべてのユーザーの行を取得しようとしているとがある場合、重複するユーザーIDは、そのユーザーSQL重複IDを持つ行のうち最大(日付)を選択
TableAの
+----+--------+-------------+--------+
| Id | UserId | CreatedDate | Status |
+----+--------+-------------+--------+
| 1 | a234 | 09/02/2017 | 0 |
| 2 | a234 | 09/03/2017 | 0 |
| 3 | a234 | 09/06/2017 | 1 |
| 4 | a143 | 08/25/2017 | 0 |
+----+--------+-------------+--------+
予想される出力のために最大(CreatedDateに)で行を取得します
+----+--------+-------------+--------+
| Id | UserId | CreatedDate | Status |
+----+--------+-------------+--------+
| 2 | a234 | 09/03/2017 | 0 |
| 4 | a143 | 08/25/2017 | 0 |
+----+--------+-------------+--------+
SQLクエリ
SELECT d.Id, d.UserId,d.CreatedDate,d.Status FROM
(
SELECT Id, Max(CreatedDate) as MaxDate
FROM TableA
GROUP BY Id
HAVING Count(*)>1
) r
INNER JOIN TableA d
ON d.Id=r.Id AND d.CreatedDate=r.MaxDate AND Status=0
しかし、私は条件が例えばシーケンスのようであるべき間違っていると思う:
第一条件ステータス= 0
第二の条件の場合、重複ユーザーIDは、マックス(CreatedDateに)他のCreatedDateに
を取る存在
互換性のないデータベースタグを削除しました。実際に使用しているデータのみにタグを付けてください。 –