1. 程式人生 > >多表刪除和更新

多表刪除和更新

多表刪除

-- 將從表 t1 裡把其 id 值可以在另一個表 t2 裡找到的所有行全部刪掉
DELETE t1 FROM t1 INNER JOIN t2 ON t1.id = t2.id;
-- 從兩個表裡把 id 值相匹配的行都刪除掉
DELETE t1,t2 FROM t1 INNER JOIN t2 ON t1.id = t2.id;
-- 從 t1 裡把表 t2 中沒有匹配的行都刪除掉
DELETE t1.* FROM t1 LEFT JOIN t2 ON t1.id = t2.id WHERE t2.id IS NULL;
-- 使用 USING 子句來連線這些表
DELETE
FROM t1 USING t1 LEFT JOIN t2 ON t1.id = t2.id WHERE t2.id IS NULL;

多表更新

-- 為每位學生的考試成績都加上一分
UPDATE score,grade_event SET score.score = score.score+1
WHERE score.event_id = grade_event.event_id
AND grade_event.data='2018-01-10' AND grade_event.category='Q';
-- 使用單表更新和子查詢
UPDATE score SET score = score+1
WHERE event_id = ( SELECT event_id FROM grade_event WHERE data='2018-01-10' AND category = 'Q' );
-- 把 id 列值相同的各行從 t1.a 列複製到 t2.a 列 UPDATE t1,t2 SET t2.a = t1.a WHERE t1.id = t2.id;