这是我的表结构
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
实际查询是什么?
答案 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没有 影响服务器选择的值。