Mysql在del和update时含子查询会报此错
-->因为在MYSQL里,不能先select一个表的记录,再按此条件进行更新和删除同一个表的记录
解决办法是,将select得到的结果,再通过中间表select一遍,这样就规避了错误,
这个问题只出现于mysql,mssql和oracle不会出现此问题
详情看sql:
原报错sql:
UPDATE table_A SET status=1
WHERE A_id IN(
SELECT order_id FROM table_A_B WHERE B_id=23
)
修改后的sql:
UPDATE table_A SET status=1
WHERE A_id IN(
SELECT a.id FROM (
SELECT id FROM table_A_B WHERE B_id=23
) a)
相当于对内子循环起了一个别名