回答編集履歴

4

推敲

2019/10/12 14:24

投稿

sazi
sazi

スコア25138

test CHANGED
@@ -28,9 +28,9 @@
28
28
 
29
29
  FROM mail_data
30
30
 
31
- ORDER BY GREATEST(from_user_id , to_user_id)
31
+ ORDER BY LEAST(from_user_id , to_user_id)
32
32
 
33
- , LEAST(from_user_id , to_user_id)
33
+ , GREATEST(from_user_id , to_user_id)
34
34
 
35
35
  , id
36
36
 

3

追記

2019/10/12 14:24

投稿

sazi
sazi

スコア25138

test CHANGED
@@ -5,3 +5,33 @@
5
5
 
6
6
 
7
7
  caseの内容とか、条件については違和感を覚えますけど、敢えて触れません。
8
+
9
+
10
+
11
+ 追記
12
+
13
+ --
14
+
15
+ 送信者と受信者のペアで固めるのにユーザーIDを使用するなら、どちらが先に来ても同じものにしなければなりません。
16
+
17
+
18
+
19
+ 同じ行内の項目の最大/最小を求めるGREATEST/LEASTを利用すれば簡単に判断できます。
20
+
21
+ [12.3.2 比較関数と演算子](https://dev.mysql.com/doc/refman/5.6/ja/comparison-operators.html#function_greatest)
22
+
23
+ 取り敢えず以下のようにすれば、送信者と受信者のペアで固まって並ぶはずですから、既読/未読の条件を追加してみて下さい。
24
+
25
+ ```SQL
26
+
27
+ SELECT *
28
+
29
+ FROM mail_data
30
+
31
+ ORDER BY GREATEST(from_user_id , to_user_id)
32
+
33
+ , LEAST(from_user_id , to_user_id)
34
+
35
+ , id
36
+
37
+ ```

2

推敲

2019/10/12 14:10

投稿

sazi
sazi

スコア25138

test CHANGED
@@ -1,4 +1,4 @@
1
- group by に **SORT**の項目を追加して下さい。
1
+ **group by**`SORT`の項目を追加して下さい。
2
2
 
3
3
  mysqlはデフォルトの設定では、group byに指定が無い項目は、忖度して適当な値を返す仕様ですので。
4
4
 

1

推敲

2019/10/12 13:16

投稿

sazi
sazi

スコア25138

test CHANGED
@@ -1,4 +1,4 @@
1
- group by に SORTを追加して下さい。
1
+ group by に **SORT**の項目を追加して下さい。
2
2
 
3
3
  mysqlはデフォルトの設定では、group byに指定が無い項目は、忖度して適当な値を返す仕様ですので。
4
4