mysql查询中的列值重复

bejyjqdl  于 2021-08-13  发布在  Java
关注(0)|答案(1)|浏览(400)

我只有mysql的工作知识。正常情况下,这是足够好,但我有这个问题,尽管在网上寻找一个可以理解的解决方案。
我有三张table:
用户

user_id  
username

产品到用户

user_id (primary key)  
security_id (primary_key)

产品

security_id (primary_key)  
product_name

我需要获得与每个产品名称相关联的用户名。我提出了这个问题。

select username,product_name 
from users 
JOIN product_to_users ON users.user_id=product_to_users.user_id 
JOIN product ON product.security_id=product_to_users.security_id;

我尝试创建一个到每个表的链接,这很好,但是我得到了

username      product_name   
bob           prod1   
bob           prod2

我需要消除左列中的重复项,所以我需要去掉第二个bob。
我的研究揭示了三件事:需要一个左连接,可能不需要连接三个表,我可能必须使用in或exists。但是,我很难确定如何编写查询。有人能帮忙吗?谢谢!

a8jjtwal

a8jjtwal1#

好吧,你可以把所有相同的产品 username 在具有聚合的同一行上:

select u.username, group_concat(product_name) product_names
from users u 
inner join product_to_users ptu on ptu.user_id = u.user_id 
inner join product p on p.security_id = ptu.security_id
group by u.user_id, u.username

相关问题