2013-03-19 51 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

相關問題