簡體   English   中英

如果另一個表中的值相等,則更新一個表

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

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