当前位置: 首页 > article >正文

mysql查询一对多重复数据拼接字符串

在MySQL中,如果你想要查询一对多的关系并将多个字段值拼接为一个字符串,你可以使用GROUP_CONCAT()函数。以下是一个简单的例子:

假设有两个表:orders(订单表)和order_items(订单项表),它们通过order_id字段关联。你想要查询每个订单的ID以及包含的所有商品名称。

SELECT o.order_id, GROUP_CONCAT(i.product_name SEPARATOR ', ') AS product_names
FROM orders o
JOIN order_items i ON o.order_id = i.order_id
GROUP BY o.order_id;

这个查询将为每个订单生成一个包含商品名称的字符串,商品名称之间用逗号和空格分隔。GROUP BY子句确保每个订单ID只出现一次。

实战

SELECT 
s.send_no,
s.sender_name,
s.status,
s.store_id,
sr.sender_tel,
COUNT(sd.sn),
GROUP_CONCAT(sd.sn SEPARATOR ',') AS product_names
from send_order_t s
LEFT JOIN sender_t sr ON sr.sender_id = s.sender_id
LEFT JOIN send_details_t sd on s.send_id = sd.send_id
where 
(s.store_id = 'mystore001' or s.status = '1')
-- s.send_no = 'DF11111'
GROUP BY send_no

----优化----
SELECT 
send_no,
sender_name,
status,
store_id,
sender_tel,
COUNT(sn),
GROUP_CONCAT(sn SEPARATOR ',') AS product_names
FROM
(
SELECT 
s.send_no as send_no,
s.sender_name as sender_name,
s.status as status,
s.store_id as store_id,
sr.sender_tel as sender_tel,
sd.sn as sn
from send_order_t s
LEFT JOIN sender_t sr ON sr.sender_id = s.sender_id
LEFT JOIN send_details_t sd on s.send_id = sd.send_id
where 
s.store_id = 'mystore001'
-- s.send_no = 'DF11111'

UNION

SELECT 
s.send_no as send_no,
s.sender_name as sender_name,
s.status as status,
s.store_id as store_id,
sr.sender_tel as sender_tel,
sd.sn as sn
from send_order_t s
LEFT JOIN sender_t sr ON sr.sender_id = s.sender_id
LEFT JOIN send_details_t sd on s.send_id = sd.send_id
where 
s.status = '1'
-- s.send_no = 'DF11111'
) AS tt
GROUP BY send_no

unoin1:

unoin2:

合并:

mysql 一对多取值,如何合并重复的字段?-腾讯云开发者社区-腾讯云


http://www.kler.cn/a/429421.html

相关文章:

  • 机器学习实战33-LSTM+随机森林模型在股票价格走势预测与买卖点分类中的应用
  • 机器学习中的凸函数和梯度下降法
  • [Do374]Ansible一键搭建sftp实现用户批量增删
  • Flink 应用
  • 计算机视觉与深度学习:使用深度学习训练基于视觉的车辆检测器(MATLAB源码-Faster R-CNN)
  • Level2逐笔成交逐笔委托毫秒记录:今日分享优质股票数据20250115
  • 【八股】HTTP
  • 数据挖掘之聚类分析
  • 网络安全中大数据和人工智能应用实践
  • Google BERT入门(3)Transformer的自注意力机制的理解(上)
  • 3D 生成重建023-DMV3D用扩散模型做3D生成大模型
  • Spring-AOP(面向切面)
  • 深入理解C#的TCPIP通信机制
  • 深度学习:CPU和GPU算力
  • Python基于OpenCV实现的人脸识别和笑容检测
  • 【Apache Paimon】-- 4 -- Flink 消费 kafka 数据,然后写入 paimon
  • Linux如何安装discuz
  • docker安装Emqx并使用自签名证书开启 SSL/TLS 连接
  • 数据库之连接池Druid
  • ZZCMS2023存在跨站脚本漏洞(CNVD-2024-44822、CVE-2024-44818)
  • sock_poll内核函数
  • No module named ‘_ssl‘ No module named ‘_ctypes‘
  • 如何防范顶级应用程序安全威胁
  • 【大语言模型】LangChain ModelsIO与Models I/O Promopts详解
  • 【CKS最新模拟真题】Dockerfile修改
  • CTF-RE/WEB: python-Hook(钩子)