5

MySQLで行番号を取得することは可能ですか? 「テーブル」があるとします

ID  tag name
1   A   alpha
4   B   beta
5   C   gamma
8   D   ceta

たとえば、「C」がそのテーブルの3行目であることをMySQLで取得するにはどうすればよいですか? 続く:

SET @pos=0;
SELECT @pos:=@pos+1,tag FROM table ORDER BY tag ASC;

必要に応じて行をカウントします。しかし(無知なコードで申し訳ありません)

SET @pos=0;
SELECT @pos:=@pos+1,tag FROM table where tag='C' ORDER BY tag ASC;

結果として 1 行が返され、pos は 0 になります。

必要に応じて「位置」を「3」にする方法はありますか? (質問に関連するかどうかにかかわらず、順序も重要です..)

4

3 に答える 3

1

IDが行番号で厳密に増加している場合は、次のことができます

SELECT COUNT(*) FROM tbl WHERE ID <= (SELECT ID FROM tbl WHERE tag = 'C');

注文の意味がよくわかりません。

補足: あなたのコード

SET @pos=0;
SELECT @pos:=@pos+1,tag FROM tbl where tag='C' ORDER BY tag ASC;

ここで @pos は、1 つのレコードのみで構成される結果セットのみで動作するため、機能しません。

于 2013-05-05T18:39:54.183 に答える
0

実は、これまで考えもしなかった可能性が 1 つあります。

SELECT count(1) FROM table WHERE tag <= 'C' ORDER BY tag

これは同じことをしているようで、少し速いです..または何か不足していますか?

于 2013-05-05T20:10:52.143 に答える