假设我有一个类似于下面的数据库表
表:"用户"
u_id uname
111 abc
112 xyz
113 pqr
115 mno
我想问:
我可以知道表格中特定记录的实际位置吗?
例如:
用户 uname ' mno '和 u_id ' 115 '在数据库中位置第4个。
请帮助,谢谢先进.. !!
答案 0 :(得分:1)
您可能要求提供相应行的序列号如果您按u_id升序排序。
如果有,这是查询:
SELECT
u_id,
uname,
@a := @a + 1 SL
FROM
user, (SELECT @a := 0) serial
ORDER BY u_id ASC
以下是示例输出:
注意:如果您根据其他字段对其进行排序,则可能会获得不同的位置编号。由于您的问题向我提示数据是基于 u_id 升序排序的,因此此查询适合。 同样,如果您想要基于 uname 字段(升序)的数据位置编号,则查询可能如下所示:
SELECT
u_id,
uname,
@a := @a + 1 SL
FROM
user, (SELECT @a := 0) serial
ORDER BY uname ASC
示例输出如下:
N:B:如果插入新记录,记录的位置也可能会发生变化。
答案 1 :(得分:0)
试试
SELECT @s:=@s+1 position,user.*
FROM user,
(SELECT @s:= 0) AS s
ORDER BY u_id ASC;
MySQL query to select results with auto increment as a new column added in the result
答案 2 :(得分:0)
数据库: postgresql
select u_id, uname, row_number() OVER () as rnum from table1
注意:如果你想要行号然后使用postgresql的row_number函数,如果你想要精确的行号,那么你必须在你的表中添加新字段,如id(主键,自动增量)