mysql - 将 GROUP_CONCAT mysql 中的最后一个逗号替换为 AND

标签 mysql

我想从 MySQL 表中检索数据并将其格式化为“Bruno、Phil Sturgeon 和 Simon”。具体来说,我想用逗号连接所有值,除了最后一个,我想用“和”连接。

现在我只能得到所有用逗号连接的值。如何将最后一个实例替换为“and”?

这是我的查询:

SELECT
   b.title,
   GROUP_CONCAT(a.name ORDER BY name SEPARATOR ',') AS name                   
FROM `book` AS b
LEFT JOIN `book_authors` AS ba
  ON b.id = ba.book_id
INNER JOIN `author` AS a
  ON a.id = ba.author_id
GROUP BY b.id
ORDER BY b.title

最佳答案

将值取到最后一个逗号,CONCAT 你的'AND'然后添加最后一个值

SELECT
   b.title,
  CONCAT(SUBSTRING_INDEX( GROUP_CONCAT(a.name ORDER BY name SEPARATOR ','),',',length( GROUP_CONCAT(a.name ORDER BY name SEPARATOR ','))-length(replace( GROUP_CONCAT(a.name ORDER BY name SEPARATOR ','),',',''))),
              ' AND ',SUBSTRING_INDEX( GROUP_CONCAT(a.name ORDER BY name SEPARATOR ','),',',-1)) AS name                   
FROM `book` AS b
LEFT JOIN `book_authors` AS ba
  ON b.id = ba.book_id
INNER JOIN `author` AS a
  ON a.id = ba.author_id
GROUP BY b.id
ORDER BY b.title

Here它是硬编码的

关于mysql - 将 GROUP_CONCAT mysql 中的最后一个逗号替换为 AND,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35345666/

相关文章:

mysql - 托管在 Heroku 上的 Rails 应用程序的地理空间和全文搜索

mysql - 三重嵌套 mysql select 在应该返回结果时没有返回结果

java - Hibernate-MySQL 连接

php - 将行移动到另一个表并插入附加值

jquery - 使用 MySQL、JSON 和 jQuery 插件 Gmap3 填充 Google map 标记

MYSQL STR_TO_DATE 未返回所需结果

php - mysql_affected_rows() 总是返回 0

MYSQL - 使用逗号分隔字符串作为变量输入的存储过程

php - 如何使PHP中的数组打印唯一?

MySQL join, count and group by 多个数据库