簡體   English   中英

MySQL查詢,join(?)和update列

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM