在使用Where子句时如何获取MySQL中实际的索引行数

在使用Where子句时如何获取MySQL中实际的索引行数,mysql,sql,Mysql,Sql,我正在处理Users表,在该表上添加了一个where子句,如下所示: SELECT F_Name, L_Name FROM Users Where HouseCode = 'ABC'; 这将返回所有在其HouseCode列中包含ABC的用户。 但是我需要表行中这些用户的实际索引号或实际行号 例如: 那些拥有HouseCode='ABC'的用户位于第行 10,18,24,77,82 那么,如何使用查询获得这些用户的实际行号或索引呢 注意:我确实有id作为主键,它是自动递增的,但有时我不得不删除用

我正在处理Users表,在该表上添加了一个where子句,如下所示:

SELECT F_Name, L_Name FROM Users Where HouseCode = 'ABC';
这将返回所有在其HouseCode列中包含ABC的用户。 但是我需要表行中这些用户的实际索引号或实际行号

例如: 那些拥有HouseCode='ABC'的用户位于第行

10,18,24,77,82

那么,如何使用查询获得这些用户的实际行号或索引呢

注意:我确实有id作为主键,它是自动递增的,但有时我不得不删除用户。所以不能依赖它

多谢各位

编辑:


我明白你想说什么,但让我用你自己的例子来解释:现在,明天如果我删除Jason的第三条记录,那么在实际索引中,id为4的Karen的记录实际上将变为第三条&这是该记录的真实索引。就这样,

id     |    F_Name    |     L_Name  | HousecCode
-------------------------------------------------
 1           Mark           Dine         123 
 2           Mary           Codd         ABC
 3          Jason           Trex         ABC
 4          Karen           Port         456
 5           Jan          Hellopei       ABC


INDEX_NO |   id     |    F_Name    |     L_Name  | HousecCode
----------------------------------------------------------------------
 1          1           Mark            Dine            123 
 2          2           Mary            Codd            ABC
 3          4          Karen            Port            456
 4          5           Jan            Hellopei         ABC

所以,当我获取记录时,它应该通过计算它在表中的位置来给出实际的索引。这就是我不能依赖id列的原因。

我只想说一句显而易见的话,那就是:

关系数据库引擎(如MySQL)不像Excel工作表那样具有行号。 支持

注意:我确实有id作为主键,它是自动递增的,但有时我不得不删除用户。所以不能依赖它

使用主键id列。仅仅因为缺少值并不会侵入列

因此:

SELECT id, F_Name, L_Name FROM Users Where HouseCode = 'ABC';
这将输出id与匹配列的唯一自动增量值

列是否是不间断的数字链是主观的,而不是任何绝对SQL记录保存的一部分

如果你只是想要一个连续的物品lst编号,你不需要记录它;但您确实需要在数据输出时生成:

完整示例: 表中的数据:

SQL的结果将是:

Jason Trex将始终位于MySQL数据库的第3行,但Jason Trex可能位于第2行

因此,要输出它,您将使用循环结构:

伪代码PHP:


MySQL不需要存储1、2、3等值,因为它是基于每个列表的。

SQL表没有实际的行号,除非列指定了此信息。如果有这样一列,则只需将其添加到选择列表中。如果没有,您的问题就没有意义。请从用户中选择id、F_Name、L_Name,其中HouseCode='ABC'。。。正如戈登罗所说的那样?没有这样的事。数据库不是Excel工作表!你的版本是什么?在最新版本中有行数窗口功能。一些数据库引擎使用堆模型来存储表数据,并可以提供行ID-对应于内部文件I/O和段标识符。这些是丑陋的标识符,我想这不是你想要的。无论如何,MySQL不使用堆模型。我明白你想说什么,但让我用你自己的例子来解释:现在,明天如果我删除Jason的第三条记录,那么在实际索引中,id为4的Karen的记录实际上将变为第三条&这是该记录的真实索引。就像这样:我编辑了我的问题。请看一看,因为评论不允许正确的样式。感谢you@AndroidDeveloper感谢您的编辑和澄清。但是,Karen的记录在数据库中的索引id始终为4,这是第4条记录。即使第三条记录为空,它仍然是第四条记录。索引不是非线性的
id     |    F_Name    |     L_Name  | HousecCode
-------------------------------------------------
 1           Mark           Dine         123 
 2           Mary           Codd         ABC
 3          Jason           Trex         ABC
 4          Karen           Port         456
 5           Jan          Hellopei       ABC
id     |    F_Name    |     L_Name  
------------------------------------
 2           Mary           Codd     
 3          Jason           Trex     
 5           Jan          Hellopei   
$counter = 0;
foreach($result as $row) {
    $counter++;
    print $counter." : ". $row['F_Name']." ".$row['L_Name']."<br>";
    }
unset($counter, $row);
 1     :    Mary     Codd         
 2     :    Jason    Trex    
 3     :    Jan      Hellopei