Mysql - 如何按用户对行进行编号? [复制]

Posted

技术标签:

【中文标题】Mysql - 如何按用户对行进行编号? [复制]【英文标题】:Mysql - How to number rows by user? [duplicate] 【发布时间】:2017-09-07 10:59:18 【问题描述】:

我有一个包含多个用户的数据库表和一个具有自动递增 ID 的列。

问题是当我创建一个userId = 2的新记录时,例如,它将这一行的id与表的最大id放在一起。

因此,查询select * from items where userId = 2 可以返回从 1 开始编号的行,即使第一条用户记录是 10。

例子:

  ID | ITEM    | USERID
 - 1 | Item 1  | 1
 - 2 | Item 2  | 2
 - 3 | Item 3  | 2
 - 4 | Item 4  | 1
 - 5 | Item 5  | 2

选择用户 ID = 2 我想要这个:

   ID | ITEM    | USERID |COUNT
 - 2  | Item 2  | 2      |1
 - 3  | Item 3  | 2      |2
 - 5  | Item 5  | 2      |3

谢谢

【问题讨论】:

例如用户添加新商品,该商品的id就是商品总数+1,对吧?如果我们在此表中有 10 条记录,则此新记录为 11。当我通过用户 ID 进行查询时,我希望返回行数为 1 而不是 11。@cBroe 他基本上想要以增量列作为第一列的结果数据 【参考方案1】:

您可以使用以下解决方案,使用variable:

SET @c_num=0;
SELECT *, @c_num:=@c_num+1 AS 'COUNT' 
FROM table_name 
WHERE USERID = 2
ORDER BY id

【讨论】:

ORDER BY id ASC 也应该包括在内!

以上是关于Mysql - 如何按用户对行进行编号? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

SQL:多次重复结果行,并对行进行编号

如何按r中其他列中的条件对行进行排序?

如何在 MySQL 中对行进行求和

在 PostgreSQL 中基于多个字段更改(包括“不可见”)对行进行编号

SQL 编号列 - MySQL

AngularJS按表头对行进行排序