文档章节

多表更新 连接

T
 Thinkle13
发布于 2017/08/30 01:02
字数 275
阅读 10
收藏 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;

 

© 著作权归作者所有

共有 人打赏支持
上一篇: MySQL入门
T
粉丝 0
博文 9
码字总数 1284
作品 0
成都
私信 提问
MySQL学习笔记-子查询和连接

MySQL学习笔记-子查询和连接 使客户端进入gbk编码方式显示: mysql> SET NAMES gbk; 1.子查询 子查询的定义: 子查询(Subquery)是指出现在其他SQL语句内的SELECT子句。 例如: SELECT * FRO...

谢育政
06/26
0
0
数据库篇-mysql详解之多表关系( 二 )

一 : 外键 现在有两个表分类表 与商品表 其中在表中的字段存放的是 表中(主键)的信息列称为. 此时分类称为,'cid'称为主键,称为从表,称为外键,通过主表的主键和从表的外键来描述主外键关系,呈...

TianTianBaby223
09/02
0
0
CoreData 与 SQLite 比较

CoreData.framework : iOS中提供了对原始SQLite数据库API访问的封装,通过这个framework来管理数据缓存和持久数据要比使用SQL语句操作SQLite数据库简单和方便许多。 机制:通过framework来存...

木木情深
2013/12/19
0
0
MySQL增删改插 及表的复制及改名

MySQL增、删、改、插 全表查询表记录 格式1:select 字段1,...字段N from 库名.表名; 格式2:select 字段1,...字段N from 库名.表名 where 条件表达式; 注意事项: 1.使用"*"可匹配所有字段...

夜流璃雨
06/26
0
0
.NET Chloe.ORM v2.10 简化多表连接查询

Chloe.ORM:一款高质量的.Net C#数据库访问框架(ORM)。支持SqlServer、MySql、Oracle及SQLite,实体为纯POCO,支持基本数据类映射的同时也支持枚举类型。查询接口借鉴linq,支持lambda表达式...

so_while
2017/06/19
592
5

没有更多内容

加载失败,请刷新页面

加载更多

EOS官方钱包keosd

EOS官方钱包的名称是keosd,它负责管理你的私钥,并且帮你进行交易的签名。 不过不幸的是,keosd钱包对普通用户并不友好,它是一个命令行程序,目前还没有像以太坊的mist那样的图形化界面,而...

汇智网教程
今天
32
0
ArrayList的实现原理以及实现线程安全

一、ArrayList概述 ArrayList是基于数组实现的,是一个动态的数字,可以自动扩容。 ArrayList不是线程安全的,效率比较高,只能用于单线程的环境中,在多线程环境中可以使用Collections.syn...

一看就喷亏的小猿
今天
38
0
Netty 备录 (一)

入职新公司不久,修修补补1个月的bug,来了点实战性的技术---基于netty即时通信 还好之前对socket有所使用及了解,入手netty应该不是很难吧,好吧,的确有点难,刚看这玩意的时候,可能都不知道哪里...

_大侠__
昨天
43
0
Django简单介绍和用户访问流程

Python下有许多款不同的 Web 框架。Django是重量级选手中最有代表性的一位。许多成功的网站和APP都基于Django。 Django是一个开放源代码的Web应用框架,由Python写成。 Django遵守BSD版权,初...

枫叶云
昨天
56
0
Spring Cloud Stream消费失败后的处理策略(四):重新入队(RabbitMQ)

应用场景 之前我们已经通过《Spring Cloud Stream消费失败后的处理策略(一):自动重试》一文介绍了Spring Cloud Stream默认的消息重试功能。本文将介绍RabbitMQ的binder提供的另外一种重试...

程序猿DD
昨天
26
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部