多表更新 连接
多表更新 连接
Thinkle13 发表于3个月前
多表更新 连接
  • 发表于 3个月前
  • 阅读 4
  • 收藏 0
  • 点赞 0
  • 评论 0

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;

 

共有 人打赏支持
粉丝 0
博文 9
码字总数 1284
×
Thinkle13
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: