我有一个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
我犯了什么错误。
答案 0 :(得分:1)
您无法在select的from子句中指定要更新的表,以帮助您选择那些行。无论如何,子选择无效,因为它会返回多个字段和多行,两者都无效,因为您正在将该查询结果与P.DAYS进行比较。
而且我认为你不需要那么复杂。这应该足够了:
UPDATE `bills_receivables` as P
SET P.days = DATEDIFF(CURDATE(),STR_TO_DATE(P.date, '%Y-%m-%d'))