Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何通过非选定属性或任何其他方式组合“选择不同”和“顺序”?_Mysql_Sql_Select - Fatal编程技术网

Mysql 如何通过非选定属性或任何其他方式组合“选择不同”和“顺序”?

Mysql 如何通过非选定属性或任何其他方式组合“选择不同”和“顺序”?,mysql,sql,select,Mysql,Sql,Select,如何通过非选定属性或任何其他方式组合“选择不同”和“顺序” 我有一张桌子叫message +----+------+-----------+-------------+ | id | body | sender_id | receiver_id | +----+------+-----------+-------------+ | 10 | ... | 1 | 2 | | 28 | ... | 1 | 3 | | 29

如何通过非选定属性或任何其他方式组合“选择不同”和“顺序”

我有一张桌子叫message

+----+------+-----------+-------------+
| 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;