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