Mysql 如何在更新查询中进行此选择查询?
如何Mysql 如何在更新查询中进行此选择查询?,mysql,Mysql,如何仅更新此查询的结果?您的意思是这样的: SELECT accounts.id, accounts.email FROM accounts INNER JOIN (SELECT email FROM accounts GROUP BY email HAVING count(id) > 5) dup ON accounts.email = dup.email 我认为您可以通过以下子查询实现这一点 UPDATE accounts SET active='0' WHERE id IN ((S
仅更新此查询的结果?您的意思是这样的:
SELECT accounts.id, accounts.email FROM accounts
INNER JOIN (SELECT email FROM accounts
GROUP BY email HAVING count(id) > 5) dup ON accounts.email = dup.email
我认为您可以通过以下子查询实现这一点
UPDATE accounts SET active='0' WHERE id IN ((SELECT accounts.id FROM accounts) AS a
INNER JOIN (SELECT email FROM accounts
GROUP BY email HAVING count(id) > 5) dup ON a.accounts.email = dup.email)
尝试:
演示:您想更新什么?更新帐户集帐户。active=0请查看我的回答是的,但我收到了以下错误:“您不能在FROM子句中为updade指定目标表“帐户”。@NeT32请这样尝试,这会创建一个隐式临时表,因此它不会被计为同一个表。但这是一个低性能的解决方案。。。如果你真的需要它,就用它。@如果我的答案解决了你的问题,你可能会考虑接受它,你也会帮助未来的人有类似的问题。
UPDATE account a
SET a.active = 0
WHERE a.id IN
(
SELECT accounts.id
FROM accounts
INNER JOIN
(
SELECT email
FROM accounts
GROUP BY email
HAVING count(id) > 5
) dup
ON accounts.email = dup.email
)
UPDATE accounts
INNER JOIN (
SELECT email FROM accounts
GROUP BY email HAVING count(id) > 5) dup
ON accounts.email = dup.email
SET active = 0