Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL-对列不在列表中的GROUPBY语句进行排序_Mysql_Sql_Group By_Sql Order By - Fatal编程技术网

MySQL-对列不在列表中的GROUPBY语句进行排序

MySQL-对列不在列表中的GROUPBY语句进行排序,mysql,sql,group-by,sql-order-by,Mysql,Sql,Group By,Sql Order By,这是我的SQL SET group_concat_max_len = 18446744073709551615; SELECT `event`.title AS 'Event Title', eventitem.startdate AS 'Start Date', `get_unique_items` ( CONVERT ( group_concat(eventstage.title SEPARATOR ',') USING ut

这是我的SQL

SET group_concat_max_len = 18446744073709551615;

SELECT
    `event`.title AS 'Event Title',
    eventitem.startdate AS 'Start Date',
    `get_unique_items` (
        CONVERT (
            group_concat(eventstage.title SEPARATOR ',') USING utf8
        )
    ) AS 'Stage',
    `get_unique_items` (
        CONVERT (
            group_concat(artists.artistname SEPARATOR ',') USING utf8
        )
    ) AS 'Artist Name'
FROM
    eventstage
INNER JOIN `event` ON eventstage.eventid = `event`.eventid
INNER JOIN eventitem ON eventitem.eventstageid = eventstage.eventstageid
INNER JOIN artists ON eventitem.artistid = artists.artistid
GROUP BY
    eventstage.eventid,
    eventitem.eventstageid,
    eventitem.startdate
get_unique_items
按名称执行。它会删除任何重复项

现在,每条记录都有一个
eventitem
和一个
排名
字段。每个艺术家都有一个排名,0表示最高,数字越高表示排名越低

如何操作SQL,以便在结果中,在“艺术家名称”列下,按排名顺序获得艺术家列表

我不相信这和我在排名字段中没有使用的功能是一样的
谢谢

GROUP_CONCAT()
支持
DISTINCT
关键字时,不清楚为什么您有一个单独的函数来删除重复项。我认为以下内容符合您的要求:

SELECT e.title AS `Event Title`,
       i.startdate AS `Start Date`,
       group_concat(DISTINCT s.title ORDER BY i.ranking SEPARATOR ',') as Stage,
       group_concat(DISTINCT a.artistname ORDER BY i.ranking SEPARATOR ',') as  `Artist Name`
FROM eventstage s INNER JOIN
     `event` e
     ON s.eventid = e.eventid INNER JOIN
     eventitem i
     ON i.eventstageid = s.eventstageid INNER JOIN
     artists a
     ON i.artistid = a.artistid
GROUP BY s.eventid, i.eventstageid, i.startdate;
注三:

  • 表别名使查询更易于编写和读取。使用它们
  • 不要对列别名使用单引号。单引号只能用于字符串和日期常量
  • 我猜
    排名
    事件项
    中,但它可能在另一个表中

GROUP BY做什么?由于我根本没有输出排名,也没有在表格上使用GROUP_CONCAT,我将把订单放在哪里。抱歉@草莓你是什么意思?它是做什么的???你没有使用聚合函数,那么为什么你的查询中有GROUP BY子句?谢谢,我会尝试一下-我会用我的DB模式简短地更新问题我是MS SQL的人,所以所有这些都非常有用!