[英]MySQL query, join(?) and update column
我需要一個MySQL查詢,它比我做過的任何查詢都要復雜得多(我幾乎無法使用最簡單的查詢)。
所以,我有2張桌子。 一個具有列(用戶,等級),另一個具有列(用戶,投票)。 在PHP環境中,我需要根據table2中包含的投票來更新table1中用戶的排名。 類似於“如果用戶投票1,將其等級增加+50。如果用戶投票-1,將其等級增加-50。如果用戶投票2,則將其等級增加+200。”
我可以用PHP完成所有“ if”工作,但實際上確實需要有一個有效的SQL查詢來獲取數據和操縱排名,因為我的項目中已經充滿了優化不佳的查詢。
提前非常感謝您!
通過將insert...select
語句與ON DUPLICATE KEY UPDATE
子句結合使用,您應該能夠ON DUPLICATE KEY UPDATE
做到這一點:
INSERT INTO userrank(user, rank)
SELECT v.user, sum(v.vote) * 50 as rank
FROM uservote v
ON DUPLICATE KEY UPDATE rank = v.rank
您可以添加第二條語句,以防在刪除所有用戶投票后刪除其排名:
DELETE FROM userrank r
WHERE NOT EXISTS (SELECT 'x' FROM uservote v WHERE v.user = r.user)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.