在使用mysql数据库时,有时需要一次操作多张表,简单例子,订单表--orders,订单明细表--order_items,现在需要根据用户的手机号码,删除该用户所有的订单。
如果写sql语句,需要两条,
DELETE oi.* from order_items oi LEFT JOIN orders o on o.id = oi.container_id LEFT JOIN users u ON o.user_id = u.id where u.user_mobile ='13262828100';
DELETE o.* from orders o LEFT JOIN users u ON o.user_id = u.id where u.user_mobile ='13262828100';
如果,有多张表,每次在里面填写user_mobile的值很浪费时间。
此时,可以使用存储过程解决。
navicat中,函数--右键--新建函数--过程--模式;out--名:mobile--类型:varchar,将上面代码中的电话号码13262828100改为mobile,
BEGIN
DELETE oi.*
from order_items oi
LEFT JOIN orders o on o.id = oi.container_id
LEFT JOIN users u ON o.user_id = u.id
where u.user_mobile = mobile ;
DELETE o.*
from orders o
LEFT JOIN users u ON o.user_id = u.id
where u.user_mobile = mobile ;
END
保存,输入存储过程名称--delOrders,
打开查询窗口,call ss('13262828100');
即可执行该存储过程。