我需要从stu_id相同的两个表中删除学生元素。我遵循了link
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,如果没有,则失败。 我想要做的是删除行中的一行或两个表。如何只用一个查询来处理它?</ p>
答案 0 :(得分:4)
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;