现在有两个表,一个表为goods表,一个表为goods_image表
goods表中存放货物的基本信息,goods_image中存放货物的图片,两个表通过good_id连接,基本结构如下:
首先查找的时候我先想到基本的关联查询:
select goods.*,goods_image.goods_path from goods,goods_image where goods.goods_id = goods_image.goods_id
结果就是这样,数据重复,这样用json不好传递,所以我们需要对sql进行优化
然后我就想到了group by 分组语句
select goods.*,goods_image.goods_path from goods,goods_image where goods.goods_id = goods_image.goods_idgroup by goods.goods_id
这样之后数据却变少了,比如说一个手机有多张图片,但是这样查询就只有第一张图片,
继续改进sql
经过一番百度,查到了sql中的group_concat()方法,将多行的数据整合到一行上,
最终sql:
select goods.*,group_concat(goods_image.goods_path) from goods,goods_image where goods.goods_id = goods_image.goods_id group by goods_id
结果:
这样就得到了所有的数据并且不重复
作为一个小白,sql中真的有好多东西需要我们去学习...
本文介绍了一种在SQL中优化关联查询的方法,特别是在处理商品及其多张图片的关系时。通过使用group_concat()函数,可以有效地将多条相关记录合并为一条记录,避免了数据重复并确保所有图片都能被正确检索。

282

被折叠的 条评论
为什么被折叠?



