这是检索课程数据的原始SQL语句:

SELECT
    `courses`.`id` AS `id`,
    `courses`.`title` AS `title`,
    `courses`.`description` AS `description`,
    MATCH (coursedata.title) AGAINST ('Salsa') * 5 + MATCH (coursedata.description) AGAINST ('Salsa') * 2 AS `relevance`,
    GROUP_CONCAT(trainers.name SEPARATOR '|||') AS `trainers`
FROM `courses`
INNER JOIN `coursedata` ON `courses`.`id` = `coursedata`.`id`
        INNER JOIN `courses_trainers` ON `courses`.`id` = `courses_trainers`.`course_id`
INNER JOIN `trainers` ON `trainer_id` = `trainers`.`id`
GROUP BY `courses`.`id`
HAVING `relevance` >= '3'

由于它使用MySQL Extensions to GROUP BY并且无法执行,因此如果sql_mode设置为ONLY_FULL_GROUP_BY ,则必须使其符合标准SQL:

SELECT * FROM (
    SELECT
        `courses`.`id` AS `id`,
        `courses`.`title` AS `title`,
        `courses`.`description` AS `description`,
        MATCH (coursedata.title) AGAINST ('Salsa') * 5 + MATCH (coursedata.description) AGAINST ('Salsa') * 2 AS `relevance`
        -- , GROUP_CONCAT(trainers.name SEPARATOR '|||') AS `trainers`
    FROM `courses`
    INNER JOIN `coursedata` ON `courses`.`id` = `coursedata`.`id`
    LEFT JOIN `courses_trainers` ON `courses`.`id` = `courses_trainers`.`course_id`
    LEFT JOIN `trainers` ON `trainer_id` = `trainers`.`id`
) AS subselect
WHERE `relevance` >= '3'

这一点很好,但我不能再使用GROUP_CONCAT函数(以便将多个trainer字段连接到一个字段/字符串)。

Error Code: 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'GROUP_CONCAT(trainers.name SEPARATOR '|||') AS `trainers`
    FROM `courses`
    INNER' at line 7

还有另一种使用GROUP_CONCAT功能的方法吗?

  ask by automatix translate from so

本文未有回复,本站智能推荐:

1回复

修改在MySQL中通过group_concat()获得的值

我有以下[表a] 在做一个group_concat之后,我得到以下内容 但是我想显示一个值出现在结果集中该值之前的次数,以避免出现冗余,如下所示 我该如何实现?
1回复

GROUP_CONCAT重复相同的值

我当前正在使用GROUP_CONCAT根据表A中的逗号分隔ID查找表B中的名称。这工作正常,但当逗号分隔ID相同时除外。 由于我不希望查询仅返回一个值,而不是用逗号分隔的相同值,因此我不能使用DISTINCT。 当我不使用DISTINCT时,该值将重复五次。 因此,对于查询,我想
1回复

SQL如何在不同的连接条件下使用相同的字段?

好吧,我有这个问题。 我有以下表格: 我对此查询很好: 结果: 但是现在我需要像这样添加shop列: 这是我到目前为止的方法,但是它总是在shop_name字段上返回null: 我认为问题在于:“ GROUP_CONCAT(CONCAT(当m.id =
2回复

有没有人发现限制group_concat行的(简单)方法?

我有一个非常大的问题来提取有关每个国家的报告的信息,而现在,我可以限制的唯一方法是在最后设置Limit 10或一些数字,这将限制国家。 但是,我想要做的是将group_concat限制为每个国家/地区10个结果,在我的情况下,这将以某种方式限制10个单词group_concat每个实例。
1回复

在MySQL中使用group_concat存储功能

我想在MySQL中创建一个存储函数。 该函数必须包含一个group_concat函数。 这是我当前的SQL查询: 这是错误消息: #1064-您的SQL语法有误; 检查与您的MariaDB服务器版本相对应的手册,以在第6行的'CONCAT('SELECT GROUP_
2回复

如何在mysql Query中应用GROUP_CONCAT

如何在此查询中应用GROUP_CONCAT ? 询问 查询输出结果屏幕 结果必需
2回复

在具有多个联接的MySQL查询上不使用DISTINCT的情况下,使用GROUP_CONCAT重复值

我有一个类似于下面的模式,我试图进行查询以从单个项目中获取所有过滤器和所有project_items,以便通过使用GROUP_CONCAT将结果放在一行中。 过滤器 ID 标题 project_filters ID filters_id
5回复

在MySQL中的子查询上使用GROUP_CONCAT

我有一个MySQL查询,我想在其中包含另一个表中的ID列表。 在网站上,人们可以添加某些项目,然后人们可以将这些项目添加到他们的收藏夹中。 我基本上想要获得那些喜欢该项目的人的ID列表(这有点简化,但这就是它归结为)。 基本上,我做这样的事情: 通过这种方式,我可以通过在我的代
2回复

如何在mysql中拆分/取消透视group_concat?

我目前在一个视图中有一列名为alt_email_contact的视图,并且使用group_concat函数来获取与一个联系人关联的多封电子邮件。 但是,我希望能够提取每个电子邮件并为每个电子邮件创建一个单独的列。 例: 电子邮件数量可能会从一个用户更改为另一个用户,因此每个用户不
1回复

组函数的使用无效(group_concat和MySQL)

我有一个问题要实现这个: phpmyadmin说:“#1111 - 无效使用群组功能”,我该如何解决?