teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

4

追記

2020/06/16 07:22

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -8,4 +8,16 @@
8
8
  where menber_id=mi.menber_id and start_date > mi.start_date
9
9
  )
10
10
  and end_date is not null
11
+ ```
12
+ どっちが低コストか分かりませんが、別パターン
13
+ ```SQL
14
+ SELECT m.id, m.name, mi.start_date, mi.end_date
15
+ from member_item mi inner join member m
16
+ om mi.menber_id = m.id
17
+ where (mi.menber_id, mi.start_date) in (
18
+ select menber_id, max(start_Date)
19
+ from member_item
20
+ group by menber_id
21
+ )
22
+ and end_date is not null
11
23
  ```

3

推敲

2020/06/16 07:22

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -4,7 +4,8 @@
4
4
  from member_item mi inner join member m
5
5
  om mi.menber_id = m.id
6
6
  where not exists(
7
+ select 1 from member_item
7
- select 1 from member_item where menber_id=mi.menber_id and start_date > mi.start_date
8
+ where menber_id=mi.menber_id and start_date > mi.start_date
8
9
  )
9
10
  and end_date is not null
10
11
  ```

2

推敲

2020/06/16 07:12

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -1,6 +1,6 @@
1
1
  最新を取得すれば、end_dateの判断だけですね。
2
2
  ```SQL
3
- select *
3
+ SELECT m.id, m.name, mi.start_date, mi.end_date
4
4
  from member_item mi inner join member m
5
5
  om mi.menber_id = m.id
6
6
  where not exists(

1

追記

2020/06/16 07:06

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -1,7 +1,8 @@
1
1
  最新を取得すれば、end_dateの判断だけですね。
2
2
  ```SQL
3
3
  select *
4
+ from member_item mi inner join member m
4
- from member_item mi
5
+ om mi.menber_id = m.id
5
6
  where not exists(
6
7
  select 1 from member_item where menber_id=mi.menber_id and start_date > mi.start_date
7
8
  )