广州北大青鸟计算机职业培训学校
互联网技术培训、软件技术培训、大数据培训、云计算培训、数据分析培训信息网
当前位置:网站首页 > 软件教程 > 数据库 > 正文

MySQL数据库多表关联更新及删除_mysql数据库

作者:小甘发布时间:2020-12-24分类:数据库浏览:798


导读:  一、多表关联更新  问题描述:现有tdb_goods表(含有具体信息)和tdb_goods_cates表(没有具体信息),需要查询tdb_goods表的所有记录,并且按"...

  一、 多表关联更新

  问题描述:现有tdb_goods表(含有具体信息)和tdb_goods_cates表(没有具体信息),需要查询tdb_goods表的所有记录,并且按"类别"分组,且将分组结果写入到tdb_goods_cates数据表。然后通过tdb_goods_cates数据表来更新tdb_goods表。

  2 查询tdb_goods表的所有记录,并且按"类别"分组

  SELECT goods_cate FROM tdb_goods GROUP BYgoods_cate;

  2 将分组结果写入到tdb_goods_cates数据表

  INSERT tdb_goods_cates (cate_name) SELECTgoods_cate FROM tdb_goods GROUP BY goods_cate;

  2 通过tdb_goods_cates数据表来更新tdb_goods表

  UPDATE tdb_goods INNER JOIN tdb_goods_catesON goods_cate = cate_name

  SET goods_cate = cate_id ;

  二、 多表关联删除

  2 从MySQL数据表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 从MySQL数据表t1里在数据表t2里没有匹配的记录查找出来并删除掉

  DELETE t1 FROM t1 LEFT JOIN T2 ON t1.id=t2.idWHERE t2.id IS NULL 或

  DELETE FROM t1,USING t1 LEFT JOIN T2 ONt1.id=t2.id WHERE t2.id IS NULL

  2 从两个表中找出相同记录的数据并把两个表中的数据都删除掉

  DELETE t1,t2 from t1 LEFT JOIN t2 ONt1.id=t2.id WHERE t1.id=25(注意此处的delete t1,t2 from 中的t1,t2不能是别名)

  如:delete t1,t2 from table_name as t1left join table2_name as t2 on t1.id=t2.id where table_name.id=25 在数据里面执行是错误的(MySQL 版本不小于5.0在5.0中是可以的)

  上述语句改写成

  delete table_name,table2_name fromtable_name as t1 left join table2_name as t2 on t1.id=t2.id wheretable_name.id=25 在数据里面执行是错误的(MySQL 版本小于5.0在5.0中是可以的)

  2 两张表关联删除:

  DELETE a,b FROM table1 a INNER JOIN table2 b ON a.id = b.aid WHERE a.id = '1'或DELETE a,b FROM table1a,table2 b WHERE a.id = b.aid AND a.id = '1'

  2 三张表删除:

  DELETE a,b,c FROM table1 a INNER JOIN table2 b ON a.id = b.aid

  INNER JOIN table3 c ON a.id = c.aid WHERE a.id = '1'

  不过这样有一个问题,就是如果a表里数据,而b表或者c表里没数据,那么整个删除就失败,即删除0条数据

  如果你的主表一定有数据,而关联的表有可能有数据也有可能没数据的话,我们可以通过左连接删除的方式,把两张表都删除。无论关联的表有没有数据,主表都可以删除成功

  DELETE a ,b ,c FROM table1 a LEFT JOIN table2 b ONa.id = b.aid

  LEFT JOIN table3 c ON a.id = c.aid WHERE a.id = 1


数据库排行
标签列表
网站分类
文章归档
最近发表