2011-07-03 9 views
4

簡単に言えば、特定の行の前にある行の数をどのように数えることができますか。増分IDを使用していますが、行がランダムに削除されるため、IDが何であるかを確認するだけでは機能しません。CodeIgniterを使用してMySQLの特定の行の前にある行の数を数えるには?

私は、例えば30行あり、名前(または何か)に基づいて1つを選択しましたが、その前に何行ありますか?それは16、1、12、または何でもかまいません。

私はMySQLとCodeIgniterを使用しています。

答えて

5

私はあなたの主キー列は、データ型の整数

削除された行はこのように仕事をする必要があり、再びに充填されることはありません、それは auto_increment列だと仮定すると、
SELECT COUNT(*) FROM `table` 
WHERE id < (SELECT id FROM `table` WHERE `conditions are met for specific row`) 
2

を持っていると仮定します。私は「連鎖方法を」使用していて、そのためにあなたはCI 2.

あなた最初のニーズにデフォルトでPHP5を必要とするどのよう

$id = $this->db->get('users')->where("name", "John")->id; 
$rows = $this->db->get('users')->where("id < ", $id)->num_rows(); 

return $rows; 

注意:お使いのモデルに

SELECT COUNT(*) FROM table WHERE id_column < your_selected_row_id; 
1

最初の行である "backwards"をカウントするレコードのIDを取得し、ユーザーと呼ばれるテーブルを考慮して、フィルタリングしている列が「name」であり、検索する行にJohnという名前の値があることを確認します。

2行目は、あなたの行数を与えること「ID < は」は、あなたが最初のクエリから得たIDがどこにあるか返されるクエリー。たぶん、両方の線をつなげることさえできます。

関連する問題