简体   繁体   English

在MySQL中使用条件更新记录

[英]UPDATE records with conditions in mysql

I have a following query 我有以下查询

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

which is working fine 很好

Now I want to update records from bookmarks table 现在我想更新书签表中的记录

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

from above query 从上面查询

Any idea? 任何想法?

Can we do this? 我们可以做到吗?

Thanks 谢谢

you can write in a query in your update like so 您可以像这样在更新中编写查询

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

You could try this: 您可以尝试以下方法:

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)

Try this one: 试试这个:

 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