2013-03-19 66 views
0

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

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` 

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

+0

'UPDATE \'Rankable \'\'TempRank \''应该改为使用'INNER JOIN' – hjpotter92 2013-03-19 05:01:39

+0

是啊,这是写年前,当我基本上是一无所知,我终于要回改变一切,让它变得更好。 – OpensaurusRex 2013-03-19 05:03:05

回答

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

更新可排序的AS r INNER JOIN temprank AS t也可以工作,如果您愿意使用AS关键字进行别名 – Shawn 2013-03-25 19:51:20

+0

如果您愿意,还可以在SET后添加WHERE子句。 – Shawn 2013-03-25 19:52:03