如何删除未绑定银行卡的用户?解决MySQL 1093报错问题
解决MySQL #1093删除错误的两种方法
这个错误源于MySQL的限制:不能在DELETE/UPDATE语句的FROM子句中直接引用要修改的目标表,你的语句直接在IN子查询里引用了users表,触发了该限制。以下是两种可行的解决办法:
方法一:子查询嵌套临时表
将原筛选子查询嵌套一层,让MySQL把内部查询结果视为临时表,绕过直接引用目标表的限制:
delete from users where id in ( select id from ( select u.id from users u left join customers_cards cc on cc.user_id = u.id where u.belongs_to = "ezpay" and cc.id is null ) as temp )
方法二:使用DELETE JOIN(推荐)
通过JOIN直接关联两张表,直接删除符合条件的用户,这种写法执行效率更高,逻辑也更直观:
delete u from users u left join customers_cards cc on cc.user_id = u.id where u.belongs_to = "ezpay" and cc.id is null
说明
两种方法都能实现需求,优先选择方法二,它无需嵌套子查询,性能更优且代码更简洁。
内容的提问来源于stack exchange,提问作者Martin AJ
相关产品推荐
相关产品推荐

