首页 > 解决方案 > MYSQL查询中的重复列值

问题描述

我只有mysql的工作知识。通常它已经足够好了,但是尽管在网上寻找一个可以理解的解决方案,但我还是遇到了这个查询的问题。

我有三张桌子:

用户

user_id  
username

product_to_users

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

我需要消除左栏中的重复项,所以我需要摆脱第二个鲍勃。

我的研究揭示了三件事:需要 LEFT JOIN,可能不需要连接三个表,我可能必须使用 IN 或 EXISTS。但是,我很难确定如何编写查询。有人可以帮忙吗?谢谢!

标签: mysqlsqljoinduplicates

解决方案


好吧,您可以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

推荐阅读