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

この全体的な考えは、基本的な観点からは実際には間違っています。リレーショナルモデルによると、特定の行には特定の位置がありません。これが、クエリを実行する場合、句を指定しない限り、行がRDBMSによって任意の順序で返される可能性がある理由です。ORDER BYはい、クエリを実行すると、行は常に同じ順序で返されます。しかし、それは単なる慣習または偶然であり、要件ではありません。それに頼るのは間違いでしょう。

したがって、あなたの場合、の位置はHOUSE1からNまでの任意の値にすることができます(N =行数)。

于 2012-11-15T00:13:24.607 に答える