回答編集履歴

3

調整

2017/05/26 04:21

投稿

yambejp
yambejp

スコア114843

test CHANGED
@@ -74,9 +74,9 @@
74
74
 
75
75
  WHERE id in(
76
76
 
77
- SELECT max(id) FROM `tbl_message_pre` WHERE 1
77
+ SELECT max(id) FROM `tbl_message_pre`
78
78
 
79
- AND board_id IN (SELECT id FROM `tbl_board` WHERE user_name_1='田中' OR user_name_2='田中')
79
+ WHERE board_id IN (SELECT id FROM `tbl_board` WHERE user_name_1='田中' OR user_name_2='田中')
80
80
 
81
81
  GROUP BY board_id
82
82
 

2

typo

2017/05/26 04:21

投稿

yambejp
yambejp

スコア114843

test CHANGED
@@ -70,9 +70,9 @@
70
70
 
71
71
  ```SQL
72
72
 
73
- SELECT * FROM `tbl_message_pre` WHERE 1
73
+ SELECT * FROM `tbl_message_pre`
74
74
 
75
- and id in(
75
+ WHERE id in(
76
76
 
77
77
  SELECT max(id) FROM `tbl_message_pre` WHERE 1
78
78
 

1

追記

2017/05/26 04:20

投稿

yambejp
yambejp

スコア114843

test CHANGED
@@ -37,3 +37,55 @@
37
37
  ORDER BY created_at DESC;
38
38
 
39
39
  ```
40
+
41
+ # 検証
42
+
43
+ ざっと検証しました
44
+
45
+ まず、田中を含むboard_idを取るのはこう
46
+
47
+ ```SQL
48
+
49
+ SELECT id FROM `tbl_board` WHERE user_name_1='田中' OR user_name_2='田中';
50
+
51
+ ```
52
+
53
+ 該当するboard_id毎のmaxのメッセージidをとるのがこう
54
+
55
+ ```SQL
56
+
57
+ SELECT board_id,max(id) FROM `tbl_message_pre`
58
+
59
+ WHERE board_id IN (SELECT id FROM `tbl_board` WHERE user_name_1='田中' OR user_name_2='田中')
60
+
61
+ GROUP BY board_id;
62
+
63
+ ```
64
+
65
+ ※ただし、実際のほしいのはmax(id)だけ
66
+
67
+
68
+
69
+ maxのメッセージidから全データを抜き出してソートするのがこう
70
+
71
+ ```SQL
72
+
73
+ SELECT * FROM `tbl_message_pre` WHERE 1
74
+
75
+ and id in(
76
+
77
+ SELECT max(id) FROM `tbl_message_pre` WHERE 1
78
+
79
+ AND board_id IN (SELECT id FROM `tbl_board` WHERE user_name_1='田中' OR user_name_2='田中')
80
+
81
+ GROUP BY board_id
82
+
83
+ )
84
+
85
+ ORDER BY created_at DESC;
86
+
87
+
88
+
89
+ ```
90
+
91
+