【问题标题】:MySQL Concat query alternativeMySQL Concat 查询替代方案
【发布时间】:2019-07-22 04:17:44
【问题描述】:

我有数据库表:

+----+--------+-----------+
| id |  name  | know_from |
+----+--------+-----------+
|  1 | Andy   |           |
|  2 | Tony   | Andy      |
|  3 | Ben    | Andy      |
|  4 | Miller | Ben       |
|  5 | Bob    | Tony      |
|  6 | Scott  | Andy      |
+----+--------+-----------+

如何有效查询并期待如下结果:

+----+--------+-------+------------------+
| id |  name  | total |  reference_list  |
+----+--------+-------+------------------+
|  1 | Andy   |     3 | Tony, Ben, Scott |
|  2 | Tony   |     1 | Bob              |
|  3 | Ben    |     1 | Miller           |
|  4 | Miller |     0 |                  |
|  5 | Bob    |     0 |                  |
|  6 | Scott  |     0 |                  |
+----+--------+-------+------------------+

我有一个使用GROUP_CONCAT( know_from SEPARATOR ',') 的解决方案,但服务器仍在使用不支持此语法的 MySQL 5.1 版。任何查询替代方案?提前致谢!

P.S.)不要告诉我更新版本作为解决方案

【问题讨论】:

  • 您可能希望发布整个查询解决方案,以便更清楚地了解问题出在哪里
  • 据我所知,MySQL 5.1。 does 支持该语法。除非你包括逗号。然后 AFAIK no 版本支持它。即GROUP_CONCAT(name SEPARATOR ',') 应该可以工作,GROUP_CONCAT(name, SEPARATOR ',') 不可能。
  • 谢谢,我认为 5.1 不适用于 SEPARATOR
  • 文档说有。再说一次,我无法测试它——我当然不会安装 5.1。 :P

标签: mysql concat


【解决方案1】:

尝试在组连接之前将名称字符串与分隔符连接

group_concat(concat(name,','))

并从结果字符串中删除最后一个 ,

【讨论】:

  • 谢谢,我用GROUP_CONCAT(know_from) 代替没有分隔符
【解决方案2】:

试试这个:

group_concat(`name` separator ',') as Name

【讨论】:

    猜你喜欢
    • 2011-08-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-25
    • 1970-01-01
    • 1970-01-01
    • 2018-03-30
    • 1970-01-01
    • 2015-08-23
    相关资源
    最近更新 更多