多表更新 连接

1.创建分类表,并将商品表中的所有分类写入分类表

①首先新建一张分类表

CREATE TABLE tdb_goods_cates(
cate_id SMALLINT UNSIGNED PRIMAREY KEY AUTO_INCREMENT,
cate_name VARCHAR(40) NOT NULL);

②然后将tdb_goods表中的goods_cate的数据写入tdb_goods_cates表中

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

③为了节省商品表中数据所占的字节空间,下面将商品表中的分类由文字改为由分类表中的cate_id代替

UPDATE tdb_goods INNER JOIN tdb_goods_cate ON goods_cate = cate_name SET goods_cate = cate_id;

 

以上三步可以简化为

CREATE TABLE IF NOT EXISTS tdb_goods_cate(
cate_id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
cate_name VARCHAR(40) NOT NULL)
SELECT goods_cate FROM tdb_goods GROUP BY goods_cate;

UPDATE tdb_goods INNER JOIN tdb_goods_cates ON goods_cate = cate_name SET goods_cate = cate_id;

 

※如果分类表和商品表要连接的两个字段名相同,在更新时可以这样写

UPDATE tdb_goods AS a INNER JOIN tdb_goods_cates AS b ON a.goods_cate_name = b.goods_cate_name SET a.goods_cate_name = cate_id;

 

2.更新后,再将商品表结构的类型进行修改,否则数据显示的数字,但占用的还是字符的字节,没有达到节省空间的效果。

ALTER tdb_goods 
CHANGE goods_cate cate_id SMALLINT UNSIGNED NOT NULL;

 

转载于:https://my.oschina.net/u/3648696/blog/1525872

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值