mysql - 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。但是,我很难确定如何编写查询。有人可以帮忙吗?谢谢!
解决方案
好吧,您可以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
推荐阅读
- vba - VBA selenium 选择具有 ext:qtip 属性的元素
- json - Flutter 从 Json 转换嵌套对象返回 null
- xslt - XSLT 转换以读取行项目数据并使用它来创建动态标题元素
- wordpress - 自动测试 CYPRESS 5.4:无法读取属性“数据”
- python - 使用换行符将json转换为字符串并在python中转义
- google-apps-script - 可安装触发器以使用多个 onEdit
- angular - ngx-bootstrap modal 没有自定义类
- java - 在这种情况下使用 Tasklet 或 Chunk
- graphql - 从驱动程序推断出架构后,如何合并架构?
- android - OutputStream.write(byte[] bytes) 给出 NetworkOnMainThread 异常但我没有在主线程上使用此方法