我想返回特定行的行號(所以給定行之前有多少行)。Mysql COUNT(*)在foreach循環中獲取行號。性能問題?
現在問題是PRIMARY_KEYs不是順序的,所以裏面有'空白',因爲有時我必須刪除行。
id = 1
id = 2
id = 5
id = 9
id = 10
因此要得到行號的唯一選擇是使用COUNT(*):
SELECT COUNT(*) FROM table WHERE id < selected_row_id;
但是對於一個給定的網頁我有多次執行此操作..所以一個解決方案是使用foreach循環,如:
foreach($foo as $item){
mysql_query("SELECT COUNT(*) FROM table WHERE id < $item['id']");
//...
}
但我認爲這不是最佳的......如果有數千行和80-100迭代上面的foreach。
另一種解決方案是在DELETING一行之後重建整個id
列..但是因爲外部約束/引用我認爲這不是一個好的步驟。
因此,如果foreach
中的COUNT(*)不可行,那麼是否有人遇到這種類型的問題,那麼最佳解決方案是什麼?
感謝您的時間,併爲我的英語不好。
您能否提供有關您將使用生成的COUNT數據的位置的詳細信息?也許還有另一種解決方法。 – philwilks 2012-03-05 11:15:43
看看這個其他的問題:[Mysql rank function](http://stackoverflow.com/questions/3333665/mysql-rank-function)。我認爲這是你需要的 – 2012-03-05 11:17:36
爲什麼你需要它在循環?我知道的唯一實際問題是如何得到一個。什麼是這個ID的數組?順便說一下,陣列的大小是多少? – 2012-03-05 11:23:37