[英]Update one table if value is equal in other table
這次我可能試圖達到很高的水平,但是我希望可以做到。 我有一個名為liga的表,如下所示:
uid | name | games | points |
___________________________________
1 | Daniel | 0 | 0 |
2 | Mikkel | 0 | 0 |
uid是用戶ID的縮寫。 然后我有一個名為kamp2的表,如下所示:
uid | k1 | k1r | k2 | k2r | week |
__________________________________________________
1 | 1 | 2-1 | X | 2-2 | 14 |
2 | 2 | 1-1 | 1 | 2-1 | 14 |
這些數據由用戶提交(附加到uid )。
現在,我想要的是一個表格,我在其中編寫足球比賽的結果,例如:
<input type="text" name="k1">... and so on...
...然后我應該寫正確的結果。 因此,對於我的實際問題:
假設第一場比賽(k1 =獲勝者(1X2)和k1r =結果)為2-1,我希望表單使用以下內容更新liga -table:
If (k1 == 1 AND k1r == 2-1) UPDATE liga SET point = point + 5 WHERE uid = $uid;
else if
(k1r == 2-1 AND k1 != 1) UPDATE liga SET point = point + 3 WHERE uid = $uid ;
else if
(k1 == 1 AND k1r != 2-1) UPDATE liga SET point = point + 1 WHERE uid = $uid ;
但這怎么可能呢? 我應該先選擇kamp2表,然后再使用它,還是應該將兩個表JOIN
? 如果這個問題太大而無法回答,請告訴我:)我不想讓您給我確切的代碼,只是為了指導我:)希望沒問題!
您可以將表連接在一起,然后使用CASE
邏輯進行更新:
UPDATE liga l JOIN
kamp2 k
ON l.uid = k.uid
SET point = (CASE WHEN k.k1 = '1' and k.k1r = '2-1' THEN point + 5
WHEN k.k1r = '2-1' AND k.k1 <> '1' THEN point + 3
WHEN k.k1 = '1' AND k.k1r <> '2-1' THEN point + 1
ELSE point
END)
WHERE l.uid = $uid ;
您也不能在相同條件下更新同一條記錄。
您需要使用子查詢來更新它。
t1 SET t.VALUE = t1.VALUE其中t.ID = t1.ID和t.NAME = t1.UPDATE data_table t,(從DISCTION_DISPLAY ID,NAME,值從data_table的值不為NULL和VALUE!='')名稱
您可以使用觸發器的概念來完成此任務:
https://www.sitepoint.com/how-to-create-mysql-triggers/
您必須在kamp2表上創建更新/插入后觸發器,然后在該觸發器中更新liga表
否則通過后端php腳本處理此問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.