我在mysql查询中的最后一个row_number是什么?

时间:2014-03-11 11:09:30

标签: php mysql

我有这样的查询:

   $sql = "SELECT * FROM doctors WHERE city ='$city' LIMIT 10 ";
   $result = $db->query($sql);

我将结果显示如下:

   while($row = $result->fetch_object()){
       echo $row->city;
    }

问题:

Mysql将在我的数据库中搜索 10 行,其 city 字段类似于 $ city

到目前为止还可以;

但我想知道最后一个结果的确切row_number是什么,mysql选择了哪个,我回应了它?

(我的意思是,考虑到该查询,Mysql在我的数据库中选择了10行 行号为:

  FIRST  = 1
  Second  = 5
  Third  = 6
  Forth  = 7
  Fifth  = 40
  Sixth  = 41
  Seventh  = 42
  Eitghth  = 100
  Ninth  = 110
  AND **last one = 111**

OK?

我想知道这个“最后一个”的位置???? )

4 个答案:

答案 0 :(得分:2)

MySQL数据库没有"行号"。数据库中的行没有固有的顺序,因此没有"行号"。如果您从数据库中选择10行,那么最后一行" s" number"如果每一行都有一个具有主要ID的字段,则使用该字段作为"绝对行号"。

答案 1 :(得分:1)

您可以让循环运行并跟踪值。当循环结束时,您将拥有最后一个值。像这样:

while($row = $result->fetch_object()){
   echo $row->city; 
   $last_city = $row->city;
}
/* use $last_city; */

要获取最后一个结果(此处,第十行)的原始表中的行号,您可以保存第十行中的数据,然后执行以下操作:
1.阅读整个表
2.循环记录,根据保存的数据进行检查 3.数据一发现就打破循环 像所以:

while($row = $result->fetch_object()){
 echo $row->city; 
 $last_row = $row;
}

现在,重新运行不带过滤器的查询:

$sql = "SELECT * FROM doctors";
$result = $db->query($sql);
$rowNumber = 0;
while($row = $result->fetch_object()) {
  if($row == $last_row) break;
  $rowNumber++;
}
/* use $rowNumber */

希望这有帮助。

答案 2 :(得分:0)

你可以在$last = $row->id;循环中执行while(或任何你想要的字段) - 它将继续被重新分配,最终结果是它包含最后一行的值。< / p>

答案 3 :(得分:0)

你可以这样做:

$rowIndex = 0;    
$rowCount = mysqli_num_rows($result);

您将在零处启动计数器并检测检索到的记录总数。

然后,当您逐步浏览记录时,您可以增加计数器。

while ( $row = $result->fetch_object() ) {
    $rowIndex++;

    [other code]
}

在While循环中,您可以检查rowIndex是否等于rowCount,如...

if ($rowIndex == $rowCount) {
    [your code]
}

我知道这是一年+晚了,但我完全是为什么安迪问他的问题。我经常需要知道这些信息。例如,假设您使用PHP以良好的HTML格式回显结果。显然,在简单地开始和结束div的情况下,你不需要知道记录结果索引,因为你可以在循环之前启动div,并在结束时关闭它。但是,知道结果集中的位置可能会影响某些样式决策(例如,将特定类添加到第一行和/或最后一行)。

我有一个案例,其中我使用了GROUP BY查询并将每组记录插入到自己的标签卡中。用户可以单击选项卡以显示每个集。我想知道我何时构建最后一个标签,以便我可以将其指定为被选中(即具有焦点的标签)。该选项卡已经在循环结束时构建,因此我需要在循环内部知道(这比使用JavaScript在事后更改选项卡的属性更有效)。