MySQL错误(1093)

时间:2015-12-16 08:17:20

标签: mysql

我阅读了一些关于此错误的帖子和回复,但所有回复都提供了具体问题的具体答案。有人可以解释问题是什么,以及如何克服它,所以我不必在这里发布每个问题查询。

这是我的程序的代码

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

1 个答案:

答案 0 :(得分:2)

一般的解释是,在MySQL中,您无法修改在SELECT部分​​中使用的同一个表。

你可以验证这个mysql参考文档:http://dev.mysql.com/doc/refman/5.6/en/update.html

(用户评论之前发现四行)

  

您无法更新表格并从中选择同一个表格   子查询。