MySQL更新查询中的错误(#1093)

时间:2015-10-17 08:26:38

标签: mysql

我有一个MySQL查询如下

UPDATE `bills_receivables` as P 
SET P.days = (
    SELECT DATEDIFF(CURDATE(),STR_TO_DATE(date, '%Y-%m-%d')) AS DAYS 
    FROM `bills_receivables`
) ;

但在运行时会发生错误,如

#1093 - You can't specify target table 'P' for update in FROM clause 

我犯了什么错误。

1 个答案:

答案 0 :(得分:1)

您无法在select的from子句中指定要更新的表,以帮助您选择那些行。无论如何,子选择无效,因为它会返回多个字段和多行,两者都无效,因为您正在将该查询结果与P.DAYS进行比较。

而且我认为你不需要那么复杂。这应该足够了:

UPDATE `bills_receivables` as P 
SET P.days = DATEDIFF(CURDATE(),STR_TO_DATE(P.date, '%Y-%m-%d'))