mysql - MySQL根据条件组合多行并将结果连接到一个字段中
问题描述
我在 MySQL 中构建查询以根据条件组合多行结果并在一个字段中连接结果时遇到了一些困难。我有以下表结构:
表1:客户
customerID feature_1 feature_2 feature_3
========== ============= ========= =========
1 administrator active 1000
2 moderator blocked 9999
表2:订单详情
OrderID customerID OrderDate OrderdetailsName OrderdetailsData
========== ========== ========== ================ ================
1 1 1/1/2018 firstname John
1 1 1/1/2018 lastname Dow
1 1 1/1/2018 phone 111111
2 2 2/1/2018 firstname George
2 2 2/1/2018 lastname Smith
2 2 2/1/2018 phone 222222
两个表中的数据都由“customerID”字段链接
我想要一个查询,给出以下结果:
OrderID OrderDate customerID feature_3 FullName
======= ========= ============ ========= ============
1 1/1/2018 1 1000 John Dow
2 2/1/2018 2 9999 George Smith
我的问题是如何使查询在单个字段中作为结果全名,因为它的数据/详细信息根据给定的元标记名称存储多行(列'OrderdetailsName' - 名字或姓氏)
非常感谢您的帮助!
解决方案
使用带有条件的组 concat 应该可以
SELECT customers.feature_3, orderdetails.OrderID, orderdetails.OrderDate,
orderdetails.customerID, GROUP_CONCAT(if(orderdetails.OrderdetailsName = 'firstname' ||
orderdetails.OrderdetailsName = 'lastname', orderdetails.OrderdetailsData, '') SEPARATOR ' ')
as fullname FROM customers join orderdetails on customers.customerID =
orderdetails.customerID GROUP by customerID
推荐阅读
- python - ImportError: Couldn't import Django ... 你忘记激活虚拟环境了吗?
- boto3 - Boto3 调用文本的请求无效
- java - 如何编写 Jsoup 选择器以获取页面中包含非锚标记的文本的元素?
- javascript - 节点 js 和 mongo API:错误:套接字挂断
- php - 如何使用 php 将谷歌驱动器下载文件写入目录
- string - 如何忽略Lua中字符串中的嵌套括号?
- design-patterns - KeyNotFoundException 与在 Kotlin 中返回 null
- scrapy - 试图用scrapy抓取一个网站 - 没有收到任何数据
- php - 除一个以外的所有的 if 语句
- python - 如何从用户输入创建会话?