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

回答編集履歴

3

調整

2017/05/26 04:21

投稿

yambejp
yambejp

スコア117973

answer CHANGED
@@ -36,8 +36,8 @@
36
36
  ```SQL
37
37
  SELECT * FROM `tbl_message_pre`
38
38
  WHERE id in(
39
- SELECT max(id) FROM `tbl_message_pre` WHERE 1
39
+ SELECT max(id) FROM `tbl_message_pre`
40
- AND board_id IN (SELECT id FROM `tbl_board` WHERE user_name_1='田中' OR user_name_2='田中')
40
+ WHERE board_id IN (SELECT id FROM `tbl_board` WHERE user_name_1='田中' OR user_name_2='田中')
41
41
  GROUP BY board_id
42
42
  )
43
43
  ORDER BY created_at DESC;

2

typo

2017/05/26 04:21

投稿

yambejp
yambejp

スコア117973

answer CHANGED
@@ -34,8 +34,8 @@
34
34
 
35
35
  maxのメッセージidから全データを抜き出してソートするのがこう
36
36
  ```SQL
37
- SELECT * FROM `tbl_message_pre` WHERE 1
37
+ SELECT * FROM `tbl_message_pre`
38
- and id in(
38
+ WHERE id in(
39
39
  SELECT max(id) FROM `tbl_message_pre` WHERE 1
40
40
  AND board_id IN (SELECT id FROM `tbl_board` WHERE user_name_1='田中' OR user_name_2='田中')
41
41
  GROUP BY board_id

1

追記

2017/05/26 04:20

投稿

yambejp
yambejp

スコア117973

answer CHANGED
@@ -17,4 +17,29 @@
17
17
  (tbl_board.user_name_1='田中' OR tbl_board.user_name_2='田中')
18
18
  ) AS sub
19
19
  ORDER BY created_at DESC;
20
- ```
20
+ ```
21
+ # 検証
22
+ ざっと検証しました
23
+ まず、田中を含むboard_idを取るのはこう
24
+ ```SQL
25
+ SELECT id FROM `tbl_board` WHERE user_name_1='田中' OR user_name_2='田中';
26
+ ```
27
+ 該当するboard_id毎のmaxのメッセージidをとるのがこう
28
+ ```SQL
29
+ SELECT board_id,max(id) FROM `tbl_message_pre`
30
+ WHERE board_id IN (SELECT id FROM `tbl_board` WHERE user_name_1='田中' OR user_name_2='田中')
31
+ GROUP BY board_id;
32
+ ```
33
+ ※ただし、実際のほしいのはmax(id)だけ
34
+
35
+ maxのメッセージidから全データを抜き出してソートするのがこう
36
+ ```SQL
37
+ SELECT * FROM `tbl_message_pre` WHERE 1
38
+ and id in(
39
+ SELECT max(id) FROM `tbl_message_pre` WHERE 1
40
+ AND board_id IN (SELECT id FROM `tbl_board` WHERE user_name_1='田中' OR user_name_2='田中')
41
+ GROUP BY board_id
42
+ )
43
+ ORDER BY created_at DESC;
44
+
45
+ ```