记录数据库表中的位置

时间:2016-01-25 06:43:21

标签: mysql database

假设我有一个类似于下面的数据库表

表:"用户"

    u_id  uname
    111  abc
    112  xyz
    113  pqr
    115  mno

我想问:

我可以知道表格中特定记录的实际位置吗?

例如:

用户 uname ' mno '和 u_id ' 115 '在数据库中位置第4个

请帮助,谢谢先进.. !!

3 个答案:

答案 0 :(得分:1)

您可能要求提供相应行的序列号如果您按u_id升序排序。

如果有,这是查询:

SELECT
    u_id,
    uname,
    @a := @a + 1 SL

FROM
    user,   (SELECT @a := 0) serial
ORDER BY u_id ASC

以下是示例输出:

enter image description here

注意:如果您根据其他字段对其进行排序,则可能会获得不同的位置编号。由于您的问题向我提示数据是基于 u_id 升序排序的,因此此查询适合。 同样,如果您想要基于 uname 字段(升序)的数据位置编号,则查询可能如下所示:

SELECT
    u_id,
    uname,
    @a := @a + 1 SL

FROM
    user,   (SELECT @a := 0) serial
ORDER BY uname ASC

示例输出如下:

enter image description here

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(主键,自动增量)