簡體   English   中英

在MySQL中使用條件更新記錄

[英]UPDATE records with conditions in mysql

我有以下查詢

SELECT count(Distinct user_bookmarks.user_id) AS bookmark_counter, bookmark_id 
FROM user_bookmarks 
LEFT JOIN bookmarks ON user_bookmarks.bookmark_id = bookmarks.id 
group by user_bookmarks.bookmark_id

很好

現在我想更新書簽表中的記錄

UPDATE bookmark 
set bookmarks_counter = bookmark_counter from from above query 
where id = bookmark_id which is again from above query

從上面查詢

任何想法?

我們可以做到嗎?

謝謝

您可以像這樣在更新中編寫查詢

UPDATE bookmark bk,
(   SELECT count(Distinct user_bookmarks.user_id) AS bookmark_counter, bookmark_id 
    FROM user_bookmarks 
    LEFT JOIN bookmarks ON user_bookmarks.bookmark_id = bookmarks.id 
    GROUP BY user_bookmarks.bookmark_id
) t
SET bk.bookmarks_counter = t.bookmark_counter
WHERE bk.id = t.bookmark_id

您可以嘗試以下方法:

UPDATE dbo.bookmarks SET bookmarks_counter = result 
WHERE user_bookmarks.user_id 
IN (SELECT count(Distinct user_bookmarks.user_id)
    AS bookmark_counter, bookmark_id  FROM user_bookmarks 
    LEFT JOIN bookmarks ON user_bookmarks.bookmark_id =  bookmarks.id  
    GROUP BY user_bookmarks.bookmark_id)

試試這個:

 UPDATE
   bookmark 
SET 
   bookmark.bookmarks_counter = other.bookmark_counter 

FROM
    (SELECT count(Distinct user_bookmarks.user_id) AS bookmark_counter, bookmark_id 
FROM user_bookmarks 
LEFT JOIN bookmarks ON user_bookmarks.bookmark_id = bookmarks.id 
group by user_bookmarks.bookmark_id) other
WHERE 
   bookmark.id = other.bookmark_id

暫無
暫無

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

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