我需要从stu_id相同的两个表中删除学生元素。我点击了这个链接
DELETE s_ezber, s_yem_tem
FROM s_ezber
INNER JOIN s_yem_tem
ON s_ezber.stu_id = s_yem_tem.stu_id
WHERE s_ezber.stu_id =1901 (s_yem_tem.stu_id )
但是,这无法正常工作。这里的问题是两个表都需要包含相同的学生 ID,如果其中一个不包含,那么这将失败。我希望它做的是删除该行(如果它存在于一个或两个表中(。如何仅用一个查询来处理它?
delete s_ezber, s_yem_tem
from (select 1901 as stu_id) sub
left join s_ezber using(stu_id)
left join s_yem_tem using(stu_id);
演示:http://rextester.com/ESX91655
这应该与事务中的两个查询具有相同的效果:
start transaction;
delete s_ezber where stu_id = 1901;
delete s_yem_tem where stu_id = 1901;
commit;