MySQLについてです。
+----+----------+---------------------+
| id | category | updated_at |
+----+----------+---------------------+
| 1 | 1 | 2018-04-10 18:34:50 |
| 2 | 1 | 2018-04-10 18:35:54 |
| 3 | 1 | 2018-04-10 18:49:04 |
| 4 | 2 | 2018-04-10 19:01:58 |
| 5 | 2 | 2018-04-10 19:18:00 |
| 6 | 2 | 2018-04-12 16:45:35 |
| 7 | 2 | 2018-04-12 16:48:53 |
| 8 | 2 | 2018-04-12 17:05:15 |
| 9 | 2 | 2018-04-12 17:27:15 |
| 10 | 3 | 2018-04-12 17:27:50 |
| 11 | 2 | 2018-04-12 17:27:56 |
+----+----------+---------------------+
上記のようなテーブルに対して、
group 内、直近2件ずつ取得したい場合、どのようなSQLになるでしょうか。
updated_at には重複はない想定です。
いろいろ検索しましたが、以下のクエリだと、グループ内の件数が少ないものが取得できませんでした。
sql
1SELECT * 2 FROM hoge T1 3 WHERE (SELECT COUNT(*) 4 FROM hoge T2 5 WHERE T2.category = T1.category 6 AND T2.updated_at >= T1.updated_at 7 ) < 3 8 ORDER BY category,updated_at DESC
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/04/16 02:13