将临时排名查询合并到单个查询中?

时间:2013-03-19 04:55:23

标签: mysql sql join

我正在尝试将以下查询合并为一个,但无论我尝试过什么似乎都不正常。它的想法是将已排序的列表插入到具有自动递增字段的临时表中,然后获取新列表,然后使用更新的值更新原始表。

INSERT INTO `TempRank` (`id`, `power`) 
SELECT `Rankable`.`id`, `Rankable`.`SA` AS `power` 
FROM `Rankable` 
INNER JOIN `Accounts` ON `Accounts`.`id` = `Rankable`.`id`
WHERE `Accounts`.`active` = '1' 
ORDER BY `power` DESC;

UPDATE `Rankable`, `TempRank`
SET `Rankable`.`id` = `TempRank`.`id`, 
    `Rankable`.`Rank` = `TempRank`.`Rank`
WHERE `Rankable`.`id` = `TempRank`.`id`

非常感谢任何信息,我会在等待您的答案时继续努力,并将根据我的发现更新您。谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

UPDATE rankable r INNER JOIN temprank t ON r.id=t.id SET r.rank=t.rank