您的位置:首页 > 数据库 > MySQL

MYSQL级联条件删除数据

2016-03-30 14:17 555 查看
有时候,删除一张表的数据需要根据另外一张表数据为依据来删除表中的数据。以下就以几种方式来实现该功能。

以下语句在mysql数据库下验证:

第一种方式:

delete ufi from

user_finger_info ufi ,user_info ui

where ufi.userid=ui.id and ui.id=32;

第二种方式:

delete ufi from

user_finger_info_copy ufi inner join user_info ui

on ufi.userid=ui.id where ui.id=31;

第三种方式:

(注意这里from表不能加别名,不然会报错)

delete from

user_finger_info_copy where

exists (select * from user_info ui where user_finger_info_copy.userId=ui.id and ui.id=30)

第四种方式:

(注意这里from表不能加别名,不然会报错)

delete from

user_finger_info_copy where

userid in (select id from user_info ui where ui.id=27)

oracle数据库不支持上述第一、第二种方式,它可以使用第三种以及第四种方式完成,并且支持表加别名。

第一种方式:

delete

from sc sc1 where exists (

select * from student s

where sc1.id=s.id and

s.id=1);

第二种方式:

delete

from sc sc1 where sc1.id in (

select id from student s

where s.id=1);

第三种方式,参考http://blog.itpub.net/29378313/viewspace-1064071/

以匿名表方式:
http://blog.itpub.net/29378313/viewspace-1064071/
delete

from (select 1 from

student s,sc sc1

where sc1.id=s.id and s.id=1);

这里不管你是把student表放前,或者sc表放前(即谁为主表),删除的都是SC表的数据,不会删除student表的数据。具体数据库内部机制不了解。请各位解答。谢谢!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: