我阅读了一些关于此错误的帖子和回复,但所有回复都提供了具体问题的具体答案。有人可以解释问题是什么,以及如何克服它,所以我不必在这里发布每个问题查询。
这是我的程序的代码
CREATE PROCEDURE `sp_FixEntityNames`(IN `importId` BIGINT UNSIGNED)
BEGIN
UPDATE ImportedSymbols s
JOIN ExchangeMappings m ON s.ExchangeMappingId = m.ExchangeMappingId
SET s.EntityName =
(
SELECT s1.EntityName
FROM ImportedSymbols s1
JOIN ExchangeMappings m1 ON s1.ExchangeMappingId = m1.ExchangeMappingId
WHERE
s1.ImportId = importId
AND
s1.Symbol = s.Symbol
AND
s1.Suffix = NULL
AND
s1.MarketId = NULL
AND
s1.SecurityTypeId = 1
AND
m1.NamespaceId = m.NamespaceId
)
WHERE
s.ImportId = importId
AND
(
s.Suffix != NULL
OR
s.MarketId != NULL
OR
s.SecurityTypeId != 1
);
END
答案 0 :(得分:2)
一般的解释是,在MySQL中,您无法修改在SELECT部分中使用的同一个表。
你可以验证这个mysql参考文档:http://dev.mysql.com/doc/refman/5.6/en/update.html
(用户评论之前发现四行)
您无法更新表格并从中选择同一个表格 子查询。