回答編集履歴

1

追記

2022/10/11 13:41

投稿

hatena19
hatena19

スコア33742

test CHANGED
@@ -10,4 +10,25 @@
10
10
  SELECT * FROM (SELECT T.* FROM T ORDER BY id DESC, t_date DESC LIMIT 1) T1
11
11
  WHERE NOT EXISTS(SELECT 1 FROM T INNER JOIN M ON T.id = M.id AND T.t_char = M.t_char);
12
12
  ```
13
+ 追記
14
+ ---
15
+ > idやt_charは外部(アプリ側)から入力される想定です。
13
16
 
17
+ > id「03」かつt_char「a」のレコードのなかから、t_dateの日付が最も新しいレコードという意味です。③のt_date「2022/10/09」よりも④のt_date「2022/10/10」のほうが新しいため、④が取得されてほしいです。
18
+
19
+ 下記のようなことかな?
20
+
21
+ ```SQL
22
+ SELECT * FROM T
23
+ WHERE
24
+ id = '01' AND t_char = 'a'
25
+ AND EXISTS(SELECT 1 FROM M WHERE id = '01' AND t_char = 'a')
26
+ UNION ALL
27
+ SELECT * FROM
28
+ (SELECT T.* FROM T
29
+ WHERE
30
+ id = '01' AND t_char = 'a'
31
+ AND NOT EXISTS(SELECT 1 FROM M WHERE id = '01' AND t_char = 'a')
32
+ ORDER BY t_date DESC LIMIT 1) T1;
33
+ ```
34
+