MySQL多表关联数据同时删除sql语句DELETE删除多表数据,怎样才能同时删除多个关联表的数据呢?这⾥做了深⼊的解释:
category(栏⽬信息表)和news(新闻数据表)。
mysql语句多表查询category中的id(栏⽬编号)字段作为该表的主键(primary key).唯⼀标识了⼀个栏⽬的信息。
news 中的id字段作为该表的主键(primary key).唯⼀标识了⼀个栏⽬的信息。
category_id(栏⽬编号)字段与category表的id字段相关联。
1.SQL删除语句
2.从数据表t1中把那些id值在数据表t2⾥有匹配的记录全删除掉1
3.从数据表t1⾥在数据表t2⾥没有匹配的记录查出来并删除掉1
4.从两个表中出相同记录的数据并把两个表中的数据都删除掉1
注意此处的delete t1,t2 from 中的t1,t2不能是别名
卵磷脂和鱼油一起吃的功效如:1
在数据⾥⾯执⾏是错误的(MYSQL 版本不⼩于5.0在5.0中是可以的)
下载jdk的网站上述语句改写成1
sql培训深圳北大青鸟Unknown table 'a' in MULTI DELETE的解决办法
在存储过程中,调⽤:
delete a from db1.tb1 a, db2.tb2 b l1 = b.col1 l2 = b.col2;
出现题⽬中的错误,:
在mysql中多表联合删除时,表别名只能在sql中表关联部分声明。我们应该避免不是表关联部分声明别名,因为这产⽣歧义的sql,从⽽产⽣不是期望的结果,例如在错误的表中删除⾏,举个例⼦来说:
DELETE t1 AS a2 FROM t1 AS a1 INNER JOIN t2 AS a2;
对于多个表的删除,表的列表中提到的表别名的引⽤,使⽤默认数据库,除⾮已经明确地指定了⼀个数据库。例如,如果默认数据库是db1,下⾯的语句将不会⼯作,因为不确定的别名a2被认为已经有
了db1:
DELETE a1, a2 FROM db1.t1 AS a1 INNER JOIN db2.t2 AS a2
WHERE a1.id=a2.id;
除了默认数据库外,为了正确地匹配表的别名,我们必须明确地指定正确的数据库的名字,
DELETE a1, db2.a2 FROM db1.t1 AS a1 INNER JOIN db2.t2 AS a2
thinkphp框架简介WHERE a1.id=a2.id;
根据上述理论,我的sql应该这样写:
delete db1.a from db1.tb1 a, db2.tb2 b l1 = b.col1 l2 = b.col2;
还有需要注意的是:
1.如果你为⼀个表声明了别名,当你指向这个表的时候,就必须使⽤这个别名,例如:
-- 正确的写法:
网页设计js脚本代码免费网站
DELETE t1 FROM test AS t1, test2 WHERE ...
-- 错误的写法:
DELETE test FROM test AS t1, test2 WHERE ...
2.在多个表联合删除时,不能使⽤order by 或limit,⽽单个表的删除时就没有这个限制。
3.当前,我们还不能在删除表的时候,在⼦查询中select from相同的表。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论