Mysql 每列值的SQL限制结果
可能重复: 我试图编写一个查询,它的功能类似于LIMIT语句,但它将限制每个不同列值而不是整个结果集返回的结果。我不知道确切地解释我想要什么的术语,所以我将使用一个例子 在这个例子中,这是一个非常简化的版本,我实际上是在尝试为系统中的每个用户选择5条最新消息。下表将userid映射到messageid。消息ID按时间顺序分配,因此最近的消息将具有更高的ID值Mysql 每列值的SQL限制结果,mysql,sql,limit,Mysql,Sql,Limit,可能重复: 我试图编写一个查询,它的功能类似于LIMIT语句,但它将限制每个不同列值而不是整个结果集返回的结果。我不知道确切地解释我想要什么的术语,所以我将使用一个例子 在这个例子中,这是一个非常简化的版本,我实际上是在尝试为系统中的每个用户选择5条最新消息。下表将userid映射到messageid。消息ID按时间顺序分配,因此最近的消息将具有更高的ID值 TABLE Messages ( userId int, messageId int ) 也许这就是你想要的: SELECT us
TABLE Messages (
userId int,
messageId int
)
也许这就是你想要的:
SELECT userId, messageId FROM (
SELECT userId, messageId,
if(@uid = userId, @cnt := @cnt + 1, (@cnt := 0 || @uid := userId)) cnt
FROM Messages
ORDER BY userId, messageId DESC
) msg_list
WHERE cnt <= 5;
你需要一个查询。什么是RDBMS?MySQL?在这里也可以看到其他人。这是一个好主意,但只有在您可以按用户ID订购的情况下才有效