在mysql中,update/delete where in select 当in的数量很大时,对性能是个很大的挑战。
1,mysql的联表更新,例如:
复制代码 代码示例:
UPDATE items,month SET items.price='12' WHERE items.id=month.id;
UPDATE a LEFT JOIN b on a.id=b.a_id SET a.title='aaaaa',b.body='bbbb' WHERE a.id=1
注意:
多表 UPDATE 不可以使用 ORDER BY 或 LIMIT。
2,mysql的联表删除
1)、从数据表t1中把那些id值在数据表t2里有匹配的记录全删除掉
复制代码 代码示例:
DELETE t1 FROM t1,t2 WHERE t1.id=t2.id
//DELETE FROM t1 USING t1,t2 WHERE t1.id=t2.id
2)、从数据表t1里在数据表t2里没有匹配的记录查找出来并删除掉
复制代码 代码示例:
DELETE t1 FROM t1 LEFT JOIN T2 ON t1.id=t2.id WHERE t2.id IS NULL
//DELETE FROM t1,USING t1 LEFT JOIN T2 ON t1.id=t2.id WHERE t2.id IS NULL
3)、从两个表中找出相同记录的数据并把两个表中的数据都删除掉
复制代码 代码示例:
DELETE t1,t2 from t1 LEFT JOIN t2 ON t1.id=t2.id WHERE t1.id=25
注意:此处的delete t1,t2 from 中的t1,t2不能是别名。