当我尝试执行这两个查询时:
UPDATE bills
SET id_bill_tmp = (SELECT IFNULL(id_bill_tmp, 0)+1 AS id_bill_tmp FROM bills)
WHERE id_interess = 1;
UPDATE bills
SET id_bill_tmp = (SELECT max(id_bill_tmp)+1 FROM bills)
WHERE id_interess = 1;
我明白了:
表'表'表'被指定两次作为更新'的目标。并作为 一个单独的数据来源
如何重写UPDATE
以不报告此错误?
答案 0 :(得分:1)
您无法通过在单个查询中获取同一表中的数据来更新表。至少你应该使用临时表,否则你应该使用视图
使用您的选择查询创建视图
CREATE VIEW `view_name` AS SELECT IFNULL(id_bill_tmp, 0)+1 AS id_bill_tmp FROM bills
然后使用视图
更新表UPDATE bills
SET id_bill_tmp = (SELECT id_bill_tmp FROM view_name)
WHERE id_interess = 1;