![](/img/trans.png)
[英]How can i fetch value of currently deleted Row in Sql trigger and update another table with the deleted row data
[英]Can I use a trigger to update a value in a table using criteria from another row?
我有一張表格,顯示兩人游戲后玩家的排名。 表看起來像:
播放器 | 秩 | 上一個_排名 |
---|---|---|
一個 | 954 | 977 |
乙 | 1023 | 1000 |
C | 1005 | 1015 |
我想創建第四列,其值在每行輸入后根據誰在玩誰而更新
因此,如果玩家 A 正在玩玩家 c,我希望顯示這些值
播放器 | 秩 | 上一個_排名 | 對手排名 |
---|---|---|---|
一個 | 954 | 977 | 1015 |
乙 | 1023 | 1000 | 無關緊要的 |
C | 1005 | 1015 | 977 |
我試過下面的觸發器,它不起作用,也不允許我的表有任何額外的條目
CREATE TRIGGER opp_rank_update
BEFORE INSERT INTO stats
FOR EACH ROW
UPDATE rank
SET opponent_rank = SELECT (SELECT previous_rank FROM rank WHERE player = new.winner)
WHERE player = new.loser
此觸發器正在引用另一個具有原始數據的表:
優勝者 | W_Score | 失敗者 | L_Score |
---|---|---|---|
一個 | 21 | 乙 | 18 |
乙 | 21 | C | 15 |
一個 | 21 | C | 16 |
您可以嘗試使用以下查詢:
WITH cte AS(
SELECT *, 0+`Rank` - `Previous_rank` AS diff
FROM tab
)
SELECT t1.`Player`,
t1.`Rank`,
t1.`Previous_rank`,
COALESCE(t2.`Rank`, 'irrelevant') AS opponent_rank
FROM cte t1
LEFT JOIN cte t2
ON t1.player <> t2.player
AND t1.diff < 0
AND t2.diff < 0
ORDER BY t1.Player
子查詢(公共表表達式 - cte)提取排名之間的差異,然后我們可以對上一個查詢的結果應用自連接來匹配具有負差異的玩家。
對於三個玩家來說,這會很好。
在這里試試。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.