MySQL-对列不在列表中的GROUPBY语句进行排序
这是我的SQLMySQL-对列不在列表中的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
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;
注三:
- 表别名使查询更易于编写和读取。使用它们
- 不要对列别名使用单引号。单引号只能用于字符串和日期常量
- 我猜
在排名
中,但它可能在另一个表中事件项