Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何在更新查询中进行此选择查询?_Mysql - Fatal编程技术网

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