表结构
CREATE TABLE `user` (
`shop_id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` varchar(36) NULL DEFAULT NULL,
`goods_name` varchar(36) NULL DEFAULT NULL,
PRIMARY KEY (`shop_id`) USING BTREE
)
CREATE TABLE `shop` (
`user_id` varchar(36) NOT NULL,
`user_name` varchar(36) NULL DEFAULT NULL,
PRIMARY KEY (`user_id`) USING BTREE
)
数据
insert into user VALUES(UUID(),'A'),(UUID(),'B');
insert into shop(user_id,goods_name) VALUES('095ed60c-a4b1-11ea-8a65-1f70d6dfdbad','Goods_A'),('095ed60c-a4b1-11ea-8a65-1f70d6dfdbad','Goods_B');
需求
user 表对 shop 表示一对多的关系,name 为 A 的用于在 shop 表中可以关联到两条数据。
select user_name,goods_name from user
left join shop on shop.user_id=user.user_id
where user_name='A'
上面这条 SQL 的结果是:
goods_id goods_name
---------------------
A Goods_A
A Goods_B
现在的需求是把这两条放到同一行中,像下面这样:
goods_id goods_name1 goods_name2
-------------------------------
A Goods_A Goods_B
还得考虑查询效率的问题,请问这个查询语句该怎么写?