搜索结果,其中子句和分组依据和排序依据

时间:2019-04-30 17:17:55

标签: mysql sql

这是我的表结构

message_id sender_id receiver_id message
-----------------------------------------
   1         2          1         Hi 1
   2         1          2         Hi 2
   3         2          1         Hi 3
   4         1          2         Hi 4
   5         3          1         Hi 5

这是我的查询

 select * 
 from message 
 where receiver_id = '1' 
 GROUP BY sender_id 
 ORDER BY message_id DESC

结果是:

5 Hi 5
1 Hi 1

但是我的预期结果是

5 Hi 5
3 Hi 3

实际查询是什么?

1 个答案:

答案 0 :(得分:0)

在下面的情况下,SQL可以提供结果。但是请检查大数据的性能。

MAX将为每个分组值返回1行。首先,我们从联接查询中获得 For i = 1 To 216 Step 1 If Sheet2.Cells(i, 1).Value >= val(TextBox5) Then ValueCharge = Sheet2.Cells(i, 2).Value Exit For End If Next i ,然后得到message_id

message

来自MySQL文档:

  

MySQL扩展了GROUP BY的使用,以便选择列表可以引用   未在GROUP BY子句中命名的非聚合列。 ... 您可以   使用此功能避免不必要的操作以获得更好的性能   列排序和分组。但是,这主要在以下情况下有用   未在GROUP BY中命名的每个非聚合列中的所有值都是   每个小组都一样。服务器可以自由选择任何值   每个组,所以除非它们相同,否则选择的值是   不定。此外,从每个组中选择值   不能通过添加ORDER BY子句来影响。排序   结果集是在选择了值之后发生的,而ORDER BY没有   影响服务器选择的值。