Mysql 查询作为选择而不是更新工作?

Mysql 查询作为选择而不是更新工作?,mysql,mysql-error-1064,Mysql,Mysql Error 1064,我试图在MySQL中使用联系人表和accounts\u contacts联接表执行重复的清理查询。我将该查询用作选择查询,但当我尝试将其更新时,会出现一个非常不明确的错误: 1064-您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以了解第3行“来自sugarDB.contacts内部连接选择dupIDs.id来自选择ct”附近使用的正确语法 以下是查询: UPDATE ctUpdate SET ctUpdate.deleted = 1 FROM sugar

我试图在MySQL中使用联系人表和accounts\u contacts联接表执行重复的清理查询。我将该查询用作选择查询,但当我尝试将其更新时,会出现一个非常不明确的错误:

1064-您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以了解第3行“来自sugarDB.contacts内部连接选择dupIDs.id来自选择ct”附近使用的正确语法

以下是查询:

UPDATE ctUpdate  
    SET ctUpdate.deleted = 1 
    FROM sugarDB.contacts AS ctUpdate 
    INNER JOIN (
        SELECT dupIDs.id
        FROM (
            SELECT ctIDs.id
            FROM sugarDB.contacts AS ctIDs 
            INNER JOIN (
                SELECT ctSource.first_name,
                    ctSource.last_name
                FROM sugarDB.contacts AS ctSource
                GROUP BY ctSource.first_name,
                    ctSource.last_name
                HAVING COUNT(*) > 1
                ORDER BY COUNT(*) DESC
            )
            AS ctSource 
            ON ctIDs.first_name = ctSource.first_name 
                AND ctIDs.last_name = ctSource.last_name
        ) 
        AS dupIDs
        LEFT JOIN sugarDB.accounts_contacts AS a2cIDs
        ON dupIDs.id = a2cIDs.contact_id 
        WHERE a2cIDs.id IS NULL
    )
    AS dupIDs
    ON ctUpdate .id = dupIDs.id
;
我已经把它倒了几天了,我找不到错误。非常感谢您的帮助

相反,联接应该是UPDATE子句的一部分:

相反,联接应该是UPDATE子句的一部分:


您可以从中选择,但不能从中更新。其实很简单:你可以从中选择,但不能从中更新。其实就这么简单:谢谢!现在看来这很明显!谢谢现在看来这很明显!
UPDATE sugarDB.contacts AS ctUpdate 
    INNER JOIN (
        SELECT dupIDs.id
        FROM (
            SELECT ctIDs.id
            FROM sugarDB.contacts AS ctIDs 
            INNER JOIN (
                SELECT ctSource.first_name,
                    ctSource.last_name
                FROM sugarDB.contacts AS ctSource
                GROUP BY ctSource.first_name,
                    ctSource.last_name
                HAVING COUNT(*) > 1
                ORDER BY COUNT(*) DESC
            )
            AS ctSource 
            ON ctIDs.first_name = ctSource.first_name 
                AND ctIDs.last_name = ctSource.last_name
        ) 
        AS dupIDs
        LEFT JOIN sugarDB.accounts_contacts AS a2cIDs
        ON dupIDs.id = a2cIDs.contact_id 
        WHERE a2cIDs.id IS NULL
    )
    AS dupIDs
    ON ctUpdate .id = dupIDs.id
    SET ctUpdate.deleted = 1 
;