Error: You can't specify target table 'trans_work_bill' for update in FROM clause
时间: 2024-10-31 20:08:40 浏览: 6
mysql中You can’t specify target table for update in FROM clause错误解决方法
这个错误提示表明你在SQL语句的FROM子句中试图对目标表`trans_work_bill`进行更新操作,这是不允许的。在SQL查询中,FROM子句用于指定数据来源,而WHERE子句则用于定义更新操作的条件。你应该把`UPDATE`语句移到FROM子句之后,仅在WHERE子句中引用`trans_work_bill`表。
正确的格式应该是这样的:
```sql
UPDATE trans_work_bill
SET yn = 0
WHERE trans_work_code IN (
SELECT trans_work_code
FROM trans_work_bill
WHERE carrier_driver_code = 'pengxin9'
AND vehicle_number = '粤BX4837'
AND work_status != 30
);
```
在这个例子中,外部的子查询只用于筛选符合条件的`trans_work_code`,然后内部的`UPDATE`语句再根据这些代码进行更新。
如果你仍然遇到这个错误,可能是其他语法问题或者是尝试在一个子查询中更新自身,这种情况下通常需要重新设计查询逻辑。
阅读全文