mysql 不使用 GROUP_CONCAT(DISTINCT v.driverPhone SEPARATOR ',') 达到连接字符串的效果
时间: 2024-01-16 18:03:22 浏览: 207
MySQL拼接字符串函数GROUP_CONCAT详解
如果你想要将一个列的多行数据拼接成一个字符串,可以使用MySQL内置的GROUP_CONCAT函数,并通过DISTINCT关键字去重,然后指定一个分隔符作为SEPARATOR参数。
如果不想使用GROUP_CONCAT,你可以考虑使用子查询和字符串连接函数CONCAT来实现。以下是一个例子:
```
SELECT t1.orderId,
GROUP_CONCAT(t2.driverPhone SEPARATOR ',') AS driverPhones
FROM orders t1
JOIN drivers t2 ON t1.orderId = t2.orderId
GROUP BY t1.orderId;
```
可以改写成如下形式:
```
SELECT t1.orderId,
(SELECT CONCAT(driverPhone, ',')
FROM drivers t2
WHERE t1.orderId = t2.orderId
FOR XML PATH('')) AS driverPhones
FROM orders t1;
```
这里使用了FOR XML PATH('')语法,将多行结果合并成一个XML字符串,然后使用CONCAT函数将XML字符串转换成一个逗号分隔的字符串。需要注意的是,这种方法可能比GROUP_CONCAT效率更低。
阅读全文