簡體   English   中英

根據來自MySQL中另一個表的數據自動更新列中的字段數量

[英]Update the quantity of a field in a column automatically based on data from another table in MySQL

真的很簡單。 這是我的數據庫架構:

表1:員額

欄:ID,內容, 喜歡,不喜歡

表2:posts_likes_dislikes

列:ID,user_id,post_id,like_or_dislike(1或0)

我想根據表2上的信息更新表1中的喜歡和不喜歡。我想要一種方法來將post_id(表2)與id(帖子)進行匹配,然后計算1和0的數量。 基於這個數量,我想更新表1中的喜歡和不喜歡。我不確定這是否可行。 盡可能,我不想使用cron作業。

我將使用這樣的查詢:

UPDATE
  posts INNER JOIN (SELECT   post_id,
                             SUM(like_or_dislike=1) likes,
                             SUM(like_or_dislike=0) dislikes
                    FROM     posts_likes_dislikes
                    GROUP BY post_id) l
  ON posts.ID = l.post_id
SET
 posts.likes = l.likes,
 posts.dislikes = l.dislikes

請看這里的小提琴。

編輯:如果您需要使用觸發器來動態更新帖子表,則可以使用如下解決方案:

CREATE TRIGGER after_insert
BEFORE INSERT ON posts_likes_dislikes
FOR EACH ROW
  UPDATE posts
  SET
    posts.likes = posts.likes + (new.like_or_dislike=1),
    posts.dislikes = posts.dislikes + (new.like_or_dislike=0)
  WHERE
    posts.ID = new.post_id;

(請注意,根據數據庫的結構,您可能還需要考慮更新和刪除觸發器)。

小提琴在這里

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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