Mysql 如何通过非选定属性或任何其他方式组合“选择不同”和“顺序”?
如何通过非选定属性或任何其他方式组合“选择不同”和“顺序” 我有一张桌子叫messageMysql 如何通过非选定属性或任何其他方式组合“选择不同”和“顺序”?,mysql,sql,select,Mysql,Sql,Select,如何通过非选定属性或任何其他方式组合“选择不同”和“顺序” 我有一张桌子叫message +----+------+-----------+-------------+ | id | body | sender_id | receiver_id | +----+------+-----------+-------------+ | 10 | ... | 1 | 2 | | 28 | ... | 1 | 3 | | 29
+----+------+-----------+-------------+
| id | body | sender_id | receiver_id |
+----+------+-----------+-------------+
| 10 | ... | 1 | 2 |
| 28 | ... | 1 | 3 |
| 29 | ... | 2 | 1 |
| 30 | ... | 2 | 1 |
| 31 | ... | 1 | 2 |
| 32 | ... | 3 | 1 |
| 37 | ... | 1 | 47 |
+----+------+-----------+-------------+
是否有办法按id DESC选择最新接收方id订单的唯一列表,并将列表限制为10项
结果应该是
+-------------+
| receiver_id |
+-------------+
| 47 |
| 1 |
| 2 |
| 3 |
+-------------+
我们知道:
SELECT DISTINCT receiver_id FROM message ORDER BY id
不是有效的sql,因为id属性必须在选择列表中我不确定未选择属性的顺序是什么意思。但是,可以使用where和子查询或联接和显式聚合来处理基本查询:
select m.receiver_id
from message m
where m.id = (select max(m2.id) from message m2 where m2.sender = m.sender)
order by id desc;
我猜排序标准是id desc
这将为您提供不同的接收方id值,按接收方id排序。
MySql在排序上似乎是一致的,不管行数限制如何
您可以在此处使用类似的示例:这里有一种方法:
select receiver_id from
(select receiver_id, max(id) max_id from message group by receiver_id) ilv
order by max_id desc limit 10;
选择前10名
a、 接收机识别码
从选择id,
接收者识别码,
按接收者划分的行数按id顺序按id描述[rank]
从消息
A.
其中a.rank=1
按a.id描述订购
这是t-sql查询对results@faressoft:更新并使查询使用分组依据。最初没有考虑行限制。它是一个无效的SQL语句。它是有效的,但不能以正确的顺序返回结果,这是显而易见的。我现在已经将其按降序排序,我忘记了指定。我认为子查询无法从外部查询访问属性。@faresoft。为什么你会认为有些事情根本不是真的。基本上,几乎每个数据库都支持相关子查询。它们是语言的重要组成部分。MySQL文档本身就是一个开始学习的简单地方:。
select receiver_id from
(select receiver_id, max(id) max_id from message group by receiver_id) ilv
order by max_id desc limit 10;