首页 > 解决方案 > 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' - 名字或姓氏)
非常感谢您的帮助!

标签: mysql

解决方案


使用带有条件的组 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

推荐阅读