MYSQL查询中的列值重复

MYSQL查询中的列值重复,mysql,sql,join,duplicates,Mysql,Sql,Join,Duplicates,我只有mysql的工作知识。通常情况下,这是足够好的,但我有这个问题,尽管在网上寻找一个可以理解的解决方案 我有三张桌子: 用户 user_id username user_id (primary key) security_id (primary_key) security_id (primary_key) product_name 面向用户的产品 user_id username user_id (primary key) security_id (prima

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

我有三张桌子:

用户

user_id  
username
user_id (primary key)  
security_id (primary_key)
security_id (primary_key)  
product_name  
面向用户的产品

user_id  
username
user_id (primary key)  
security_id (primary_key)
security_id (primary_key)  
product_name  
产品

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


我的研究揭示了三件事:需要一个左连接,可能没有必要连接三个表,我可能必须在中使用或存在。然而,我很难决定如何编写查询。有人能帮忙吗?谢谢

那么,您可以使用聚合将相同
用户名的所有产品放在同一行上:

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

你没有清楚地说出你想要什么,输出是输入的函数。当你清楚了,这将是一个常见问题解答。Left join用于输入的行与join不匹配,并且希望返回的列扩展为空值的列。要在每一行中只返回一行作为输入,请使用select distinct。。在考虑发帖之前,请阅读您的教科书和/或手册,并在谷歌上搜索任何错误消息或您的问题/问题/目标的许多清晰、简洁和准确的措辞,包括或不包括您的特定字符串/名称和网站:stackoverflow.com&tags;阅读许多答案。请在代码问题中给出一个--cut&paste&runnable代码,包括作为代码输入的最小代表性示例;期望和实际输出(包括逐字记录错误消息);标签和版本;清晰的说明和解释。给出你能给出的最少代码,即你显示的代码是OK的,扩展为你显示的代码是不OK的。(调试基础。)用于包含DBMS和DDL(包括约束和索引)的SQL,并将其作为格式化为表的代码输入。停止尝试编码你的总体目标&解释你期望从给定的代码中得到什么&为什么。