質問編集履歴
3
自分で試している微妙に実現できていないSQL文を掲載しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -38,13 +38,30 @@
|
|
38
38
|
|
39
39
|
### 試したこと・調べたこと
|
40
40
|
- [x] teratailやGoogle等で検索した
|
41
|
-
- [ ] ソースコードを自分なりに変更した
|
42
|
-
- [ ] 知人に聞いた
|
43
|
-
- [ ] その他
|
44
41
|
|
45
42
|
##### 上記の詳細・結果
|
46
43
|
多くの場合で、登録されるデータとして必ず新しいものが後に登録される(idが大きい)ケースはあり、参考になるのですが、今回のように必ずしもidが大きなものが新しい日付でない場合は上手く取得できませんでした。
|
47
44
|
|
45
|
+
### 試したSQL(微妙に上手くいっていないケース)
|
46
|
+
|
47
|
+
```SQL
|
48
|
+
SELECT
|
49
|
+
`group_id`,
|
50
|
+
`id`,
|
51
|
+
MAX(registed) AS `latestDate`
|
52
|
+
FROM
|
53
|
+
`hoge`
|
54
|
+
WHERE
|
55
|
+
`registed` <= '2025-08-01'
|
56
|
+
GROUP BY
|
57
|
+
`group_id`
|
58
|
+
;
|
59
|
+
```
|
60
|
+
|
61
|
+
これですと2つ目のケースのグループ2が正常に新しいレコードが取得できません。
|
62
|
+
なお、MySQLでのSTRICT制約は外しています。
|
63
|
+
|
64
|
+
|
48
65
|
### 補足1
|
49
66
|
元データの id:6の内容修正に伴い期待する取得結果も修正しました。
|
50
67
|
閾値として設定された日付より前に登録されたデータの内、より後に登録されたものを取得したい為。
|
2
2つ目のケースの取得条件が誤っていたため修正(誤:閾値として「2025-09-01」/正:閾値として「2025-08-01」)しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -23,7 +23,7 @@
|
|
23
23
|
|
24
24
|
> id:6の内容修正に伴い期待する取得結果も修正しました
|
25
25
|
|
26
|
-
日付の閾値として「2025-
|
26
|
+
日付の閾値として「2025-08-01」が指定された場合は以下のような結果を期待すます。
|
27
27
|
|id|group_id|value_number|registed|
|
28
28
|
|--:|--:|--:|--:|
|
29
29
|
|5|1|14|2025-08-01|
|
1
元データの id:6の内容修正に伴い期待する取得結果も修正しました
title
CHANGED
File without changes
|
body
CHANGED
@@ -7,8 +7,10 @@
|
|
7
7
|
|3|1|12|2025-10-01|
|
8
8
|
|4|1|13|2025-08-01|
|
9
9
|
|5|1|14|2025-08-01|
|
10
|
-
|6|2|22|2025-
|
10
|
+
|6|2|22|2025-09-01|
|
11
11
|
|
12
|
+
> id:6のregistedを「2025-10-01」から「2025-09-01」に修正しました。
|
13
|
+
|
12
14
|
指定された日付までの登録データの中で、グループ毎に最新の値が取得したいです。
|
13
15
|
同一のグループで同一の日付に複数の登録がある場合は、後から登録されたもの(idが大きいもの)を取得したいと考えています。
|
14
16
|
なお、登録は必ずしも日付順ではない為、idの大きいなものにより古い日付のデータが登録される事もあります。
|
@@ -17,8 +19,10 @@
|
|
17
19
|
|id|group_id|value_number|registed|
|
18
20
|
|--:|--:|--:|--:|
|
19
21
|
|3|1|12|2025-10-01|
|
20
|
-
|6|2|22|2025-
|
22
|
+
|6|2|22|2025-09-01|
|
21
23
|
|
24
|
+
> id:6の内容修正に伴い期待する取得結果も修正しました
|
25
|
+
|
22
26
|
日付の閾値として「2025-09-01」が指定された場合は以下のような結果を期待すます。
|
23
27
|
|id|group_id|value_number|registed|
|
24
28
|
|--:|--:|--:|--:|
|
@@ -32,14 +36,6 @@
|
|
32
36
|
|
33
37
|
何か良い方法はありますでしょうか。
|
34
38
|
|
35
|
-
|
36
|
-
|
37
|
-
### 該当のソースコード
|
38
|
-
|
39
|
-
```
|
40
|
-
特になし
|
41
|
-
```
|
42
|
-
|
43
39
|
### 試したこと・調べたこと
|
44
40
|
- [x] teratailやGoogle等で検索した
|
45
41
|
- [ ] ソースコードを自分なりに変更した
|
@@ -49,5 +45,6 @@
|
|
49
45
|
##### 上記の詳細・結果
|
50
46
|
多くの場合で、登録されるデータとして必ず新しいものが後に登録される(idが大きい)ケースはあり、参考になるのですが、今回のように必ずしもidが大きなものが新しい日付でない場合は上手く取得できませんでした。
|
51
47
|
|
52
|
-
### 補足
|
48
|
+
### 補足1
|
53
|
-
|
49
|
+
元データの id:6の内容修正に伴い期待する取得結果も修正しました。
|
50
|
+
閾値として設定された日付より前に登録されたデータの内、より後に登録されたものを取得したい為。
|