mysql在把子查询结果作为删除表中数据的条件,mysql不允许在子查询的同时删除原表数据
来源:互联网 发布:勇士队球员得分数据 编辑:程序博客网 时间:2024/04/29 09:24
目标表和原表一致 MYSQL不支持如此操作
我们的一般思路就是,1、把子查询的结果创建临时表存储。2、把这个临时表作为原表删除的条件。3、删除临时表。
实例:
子查询:
SELECT product_id from t_product_specification_value as tps WHERENOT EXISTS(SELECT id from t_product p WHERE p.id=tps.product_id ) AND NOT EXISTS(SELECT id from t_appr_product p WHERE p.id=tps.product_id)根据子查询结果创建临时表tempid
create table tempid SELECT product_id from t_product_specification_value as tps WHERENOT EXISTS(SELECT id from t_product p WHERE p.id=tps.product_id ) AND NOT EXISTS(SELECT id from t_appr_product p WHERE p.id=tps.product_id)把这临时表作为删除原表数据的条件
delete from t_product_specification_value where product_id in (select * from tempid)删除临时表
drop table tempid
修正:可以直接使用如下语句:
DELETE from t_product_specification_value WHERE
NOT EXISTS(SELECT id from t_product p WHERE p.id=t_product_specification_value.product_id )AND NOT EXISTS(SELECT id from t_appr_product p WHERE p.id=t_product_specification_value.product_id)
并且使用where not exists还可以优化性能(where后面不需要加product_id字段条件,如果添加反而会出错)
0 0
- mysql在把子查询结果作为删除表中数据的条件,mysql不允许在子查询的同时删除原表数据
- MYSQL 不允许在子查询的同时删除原表数据的解决方法 specify target table
- MSQL子查询的同时删除原表数据,查詢字段重複的記錄
- mysql查询数据的同时对它进行删除操作
- MySQL中查询后用查询结果当删除的判断条件,进行删除操作
- mysql 查询表同时删除该表中的数据
- Mysql 查询表中重复数据和删除表中重复的数据
- mysql 把当前行数据作为子查询的条件、基于join的update、创建触发器
- mysql分组查询结果集作为条件查询的问题
- MySQL 返回条件查询结果的n条数据
- Mysql删除同一张表的子查询语句
- MySQL主外键表关联表数据的同时删除
- MySQL主外键表关联表数据的同时删除
- mysql 对表数据进行求和分组并在结果中筛选符合条件的数据 having group by count
- Mysql查询重复数据并按条件删除重复行
- MYSQL删除子查询
- mysql子查询结果作为最后的列
- 在MySQL中查询某条数据的排名
- 视频电商网站实战 - 构建视频提交页面(上)
- C语言,排序
- hdu2060 Snooker
- HTML5定位实例
- 获取验证码倒计时
- mysql在把子查询结果作为删除表中数据的条件,mysql不允许在子查询的同时删除原表数据
- Linux运维工程师真实的工作状态到底是怎么样的?
- Android自定义View基础(三)-颜色
- Android MVVM Architecture
- andriod 断点下载
- c语言中,结构体做参数调用例子结构体形参例子
- 巴爷微信商城
- C#语言编写代码逻辑
- spring AOP 为系统增加操作日志