2011-11-22 13 views
2

私はMySQLにテーブルを次のように設定しています。今度は、ソートされた順番でレコードの行番号を選択する必要があります。たとえば、'c'で始まる行の行数は4である必要があります。MySQL - レコードの行番号を選択してください

Words 
===== 
coffee 
banana 
apple 
cherry 
blackberry 

私は次のクエリを試しましたが、間違った結果が得られました。ここではdictがテーブル名、wordsが列名です。

SELECT @rownum:[email protected] + 1 id FROM (SELECT * FROM dict ORDER BY words) d,(SELECT @rownum:=0) r WHERE d.words LIKE CONCAT('c','%') 

上記のクエリでは、外部クエリの行番号を取得しています。しかし、内部クエリの行番号が必要です。私はそれを得る方法を知らない。

何か助けていただければ幸いです。ありがとう。

+0

いくつかの読書:http://www.xaprb.com/blog/2006/12/02/how -to-number-rows-in-mysql/ – biziclop

答えて

6

おそらくこれを試してみてください:単一のクエリとして

SET @rownum = 0; 
SELECT id 
FROM (SELECT *, @rownum:[email protected] + 1 AS id FROM dict ORDER BY words) d 
WHERE d.words LIKE CONCAT('c','%') 

を、これを試してみてください。

SELECT id 
FROM (SELECT *, @rownum:[email protected] + 1 AS id FROM dict, (SELECT @rownum:=0) r ORDER BY words) d 
WHERE d.words LIKE CONCAT('c','%') 
+0

こんにちはIvan、このクエリは完全に動作します。しかし、私はPHPで同時に2つのクエリを実行することはできません。だから、あなたは単一のクエリとして実行するようにクエリを変更できますか? – Vivek

+0

最初の部分なしで試してください。 –

+1

私はそれを自分で手に入れました。 d idwords from CONCAT( 'b'、 'b'、 'b'、b '、b'、b) % '); – Vivek

関連する問題