【发布时间】:2009-08-18 16:40:29
【问题描述】:
假设我有一个这样的表(这只是一个简化的例子,我说的实际表要复杂得多):
CREATE TABLE media (
id INT NOT NULL AUTO_INCREMENT,
title VARCHAR(255) NOT NULL,
description TEXT NOT NULL,
voted INT NOT NULL DEFAULT 0,
rating FLOAT NOT NULL DEFAULT 0
) ENGINE = INNODB;
voted 列代表项目获得的投票数,rating 列代表项目的总评分。
现在,我想做的是根据 id 从表中选择一个项目,例如:
SELECT m.* FROM media AS m WHERE id = 5;
但是,此外,我想根据 rating 列计算这一行的位置,并将其作为附加列获取,假设称为 site_rank(因此row 是它的 site_rank 越高,我希望我解释得很好)。我的猜测是这可以通过子选择查询来实现,但我不知道该怎么做。
有什么帮助吗?
【问题讨论】:
-
我可以建议实施一个每隔一段时间更新一次的 Site_Rank 列吗?可能会容易得多。
-
这样你就可以进行一个非常大的数据库调用(或几个较小的),然后更新每一个。然后在 5 分钟内你不需要做任何其他事情。