我有一張表,我想爲每條記錄應用一個價格等級。MySQL根據另一個字段的順序應用每行的字段值
1爲最高,2爲下一個最高,3爲下一個最高。
目前我選擇各行,然後更新每個記錄單獨像這樣:
用法:功能get_list(「表」,「順序字段」,「順序方向」) - 返回關聯數組
foreach(get_list('ps2','price','DESC') as $p)
{
$ct++;
$s = "UPDATE `ps2`
SET `price_rank` = '".$ct."'
WHERE `db_id` = '".$p[db_id]."'
LIMIT 1";
mysql_query($s);
}
由於我有很多記錄,這是非常緩慢的,有沒有另一種方式?
編輯: 下面是一種方式更快,但有沒有更好的方法?
ALTER TABLE `ps2` DROP `price_rank` ;
ALTER TABLE `ps2` CHANGE `db_id` `db_id` INT(11) NOT NULL ;
ALTER TABLE `ps2` DROP PRIMARY KEY ;
ALTER TABLE `ps2` ORDER BY `price_per_pax_after_tax` DESC;
ALTER TABLE `ps2` ADD `price_rank` INT NOT NULL AUTO_INCREMENT PRIMARY KEY;
ALTER TABLE `ps2` ORDER BY `db_id`;
ALTER TABLE `ps2` CHANGE `price_rank` `price_rank` INT(11) NOT NULL ;
ALTER TABLE `ps2` DROP PRIMARY KEY ;
ALTER TABLE `ps2` ADD PRIMARY KEY (`db_id`) ;
ALTER TABLE `ps2` CHANGE `db_id` `db_id` INT(11) NOT NULL AUTO_INCREMENT ;
您在這裏沒有提供足夠的信息,我們需要了解如何計算價格等級以便將其應用於表格。乍看起來,它應該可以用更新/案例說明來處理,但是再次,沒有更多細節,很難給出具體的答案。 – Icarus