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