sql中一张表的ids字段存储多个id用’,‘隔开,存储对应多张表的id,一对多关联查询

商品表: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 标配,标配+墨水

猜你喜欢

转载自blog.csdn.net/weixin_45121502/article/details/107160714
今日推荐