在使用Where子句时如何获取MySQL中实际的索引行数
我正在处理Users表,在该表上添加了一个where子句,如下所示:在使用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作为主键,它是自动递增的,但有时我不得不删除用
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