Mysql合并某一个字段,解决商品属性查询问题

      今天接到一个需求,需要导出商品到excel,首先就是需要查询已经已上架的商品,这个跟提供给前端的查询接口还不太一样,因为是给管理人员使用的,所以商品信息比较全面,6表联查,这不是关键,关键是遇到一个问题,请让我细细道来。

       其中第一个问题,请看下边两张我简化后的表

          


我需要将这两张表关联起来,只要sku在skuIds中存在就可以关联,问了几个人,都跟我说是通过“,”拆分什么的,感觉好麻烦,后来看见一篇帖子,忽然发现这个好简单,十分感谢那位热心博主,下边贴出sql

SELECT
p.*, s.`value`
FROM
product p,
spec s
WHERE
FIND_IN_SET(p.sku, s.skuIds)

ORDER BY

p.sku

用了一个函数 FIND_IN_SET(str,strlist),其中str也可以写成入参,也可以直接用整个字段,strlist就是你需要满足的条件,只要你传进来的值在strlist中有,就满足条件,很是方便,查询完自后是这样的结果

  

    

如图所示,其实方框中是一件商品,我想把value合并,我去百度了下,找到一个合并字段的函数,GROUP_CONCAT(expr),然后用上了,sql如下:

SELECT
p.*, GROUP_CONCAT(s.`value`) `value`
FROM
product p,
spec s
WHERE
FIND_IN_SET(p.sku, s.skuIds)


GROUP BY 
p.sku
ORDER BY 
p.sku




完美解决!


你可能感兴趣的:(个人)