选择最后的10个查询

问题描述:

我想从我的messages表要么在receiver_id = 1sender_id = 1,但那些有receiver_id = 1DISTICT应用在sender_id和那些有sender_id = 1有选择的最后10行不同的行receiver_id上应用的DISTINCT属性。选择最后的10个查询

基本上,我想说的是我想要选择最后10条消息,要么是由用户收到的ID为1,要么由10个不同的其他用户发送或发送。

我有什么企图迄今:

SELECT * FROM (SELECT DISTINCT sender_id FROM messages WHERE receiver_id = 1) ORDER BY id DESC LIMIT 10) tmp ORDER BY id ASC 

SELECT * FROM (SELECT * DISTINCT receiver_id FROM messages WHERE sender_id= 1) ORDER BY id DESC LIMIT 10) tmp ORDER BY id ASC 

但试图获得单独并添加阵列(和消息的ID对它们进行排序)没有相当的工作。

所以我试图使一个查询,像这样:

SELECT * FROM (SELECT DISTINCT receiver_id, sender_id FROM messages WHERE (receiver_id = 1 OR sender_id = 1)) ORDER BY id DESC LIMIT 10) tmp ORDER BY id ASC 

但事实证明,我的查询是一个总的混乱和科西嘉的,不回我我想要的东西。

PS:我使用的XAMPP MySQL的:MariaDB的

+0

请编辑您的问题,并提供样本数据和期望的结果。 “DISTINCT”不是一种财产,并且您不清楚您的要求。 –

+0

请参阅https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple-sql-查询 – Strawberry

你的第二个段落是:

基本上,我是什么想说的是,我想选择10条 最后消息(行存储)在分别的数据库或者发送 或通过用户与1.

这是一个相当基本查询的ID接收:

SELECT m.* 
FROM messages m 
WHERE 1 IN (m.receiver_id, m.sender_id) 
ORDER BY m.id DESC 
LIMIT 10; 
+0

我不知道如何解释我想要什么=)) 我想我会编辑我的问题,当我找到一种方法来正确解释 –

+0

噢..我想这是我想问: 我想要最后的10条消息,要么是由用户收到的ID为1,要么由10位不同的其他用户发送,要么由其他用户发送。 我现在编辑我的问题。 –