今天接到一个需求,需要导出商品到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
完美解决!