商品表:goods
SELECT * FROM `goods`
id | name | color_ids | type_ids |
---|---|---|---|
1 | 铅笔 | 1,2,3 | 1,2 |
2 | 钢笔 | 3,4 | 1,3 |
颜色表:color
SELECT * FROM color
id | color |
---|---|
1 | 黑色 |
2 | 白色 |
3 | 蓝色 |
4 | 紫色 |
类型表:type
SELECT * from type
id | type |
---|---|
1 | 标配 |
2 | 标配+橡皮 |
3 | 标配+墨水 |
多表查询:
SELECT
g.id,
g.name,
g.color_ids,
GROUP_CONCAT(c.color) as colorName,
g.type_ids,
A.typeName
FROM
goods as g
INNER JOIN color as c on FIND_IN_SET(c.id, g.color_ids),
(
SELECT
g.id,
GROUP_CONCAT(t.type) as typeName
FROM
goods as g
INNER JOIN type as t on FIND_IN_SET(t.id, g.type_ids)
GROUP BY
g.id
) as A
WHERE
A.id = g.id
GROUP BY
g.id
id | name | color_ids | colorName | type_ids | typeName |
---|---|---|---|---|---|
1 | 铅笔 | 1,2,3 | 黑色,白色,蓝色 | 1,2 | 标配,标配+橡皮 |
2 | 钢笔 | 3,4 | 蓝色,紫色 | 1,3 | 标配,标配+墨水 |