images/default2.jpg

MySQL JOIN MIN()/MAX() 组合使用

Tuesday, Jun 9, 2020

这次阿航在开发后端接口, 写复杂SQL查询时碰到了这个问题, 我需要将MySQL的JOIN关键字和MIN()同时使用. 本篇文章就来记录下MySQL JOIN MIN()/MAX()的组合使用. 应用场景 大家都有过淘宝网购的经历, 应该记得在搜索时, 出来的结果列表都是每个产品的最小价格. 点进去后, 选择不同的型号会有相应的价格. 阿航碰到的是我有两个表, 一个是SPU(产品表), 一个是SKU(商品表), 它们是一对多的关系(因为一款产品会有多个型号). 我需要在查询SPU的同时, 再把对应的最便宜的SKU的价格进行返回. 总结: 一对多关联查询, 并且把多的表的最大/最小值返回. 实战开始 [epcl_box type=“information”]为了方便大家理解, 阿航在这里进行相应的简化[/epcl_box] 数据关系 先来看下两个表的关系: 其中, 一个SPU对应多个SKU ( 比如一件衣服有多个颜色 ). 💡 解析 初始化数据库 进入数据库, 运行以下SQL语句定义并初始化数据表: CREATE DATABASE mysql_join_demo DEFAULT CHARACTER SET = 'utf8mb4'; USE mysql_join_demo; CREATE TABLE t_spu( id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', name VARCHAR(32) NOT NULL COMMENT '产品名', PRIMARY KEY (id) ) COMMENT = '产品SPU表'; CREATE TABLE t_sku( id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', spu_id BIGINT NOT NULL COMMENT '产品ID', spec VARCHAR(32) NOT NULL COMMENT '型号', price BIGINT NOT NULL COMMENT '价格', PRIMARY KEY (id) ) COMMENT = '商品表'; INSERT INTO `mysql_join_demo`.
2 minute read