1

可能重复:
MySql 行号?

我的 mysql 表中有 10 个名称,我想获取特定名称的位置。我没有找到任何解决方案。

ID      NAMES
1       APPLE  
3       MANGO 
5       PARROT
9       TREE
12      HOUSE
14      AIRPLANE
19      ROCKET
22      SHIP
38      BOAT 
41      MOUNTAIN

假设我想要 HOUSE 的职位,我应该得到的答案是 5。但我无法做到这一点。

4

3 回答 3

3
SELECT `rank`
FROM
(
  select @rownum:=@rownum+1 `rank`, p.* 
  from TableName p, (SELECT @rownum:=0) r 
  order by ID 
) s
WHERE names = 'house'
于 2012-11-15T00:00:06.813 回答
0
$query = "SELECT * FROM TABLE";

$result = mysql_query($query, );
$num = mysql_numrows($result);
$i = 0;
while($i < $num) {
    $name = mysql_result($result, $i, "NAMES");
    if($name == "House")
        break;

   $i++;
}

// $i contains position of "House"
于 2012-11-15T00:04:17.277 回答
-1

从基本的角度来看,这整个想法实际上是错误的。根据关系模型,特定行没有特定位置。这就是为什么如果您执行查询,除非您指定ORDER BY子句,否则RDBMS 可能会以任何顺序返回行。是的,当您执行查询时,行总是以相同的顺序返回。但这更多是约定或巧合,而不是要求。依赖它是错误的。

因此,在您的情况下, 的位置HOUSE可以是 1 到 N 之间的任何值(N = 行数)。

于 2012-11-15T00:13:24.607 回答