使用mySQL sql\u mode=only\u full\u group\u by获取组的第一行

使用mySQL sql\u mode=only\u full\u group\u by获取组的第一行,mysql,Mysql,在mySQL 5.7.5之前,我能够理解这种类型的查询,但在5.7.5之后,由于选项sql\u mode=only\u full\u group\u by被默认为enable,我有点不知所措 我有一个查询,我想选择每组的第一行: SELECT w.work_id, w.`name`, CONCAT(r.recording_id, '/', r.seo_url) FROM work w JOIN recording r ON w.work_id = r.work_id

在mySQL 5.7.5之前,我能够理解这种类型的查询,但在5.7.5之后,由于选项
sql\u mode=only\u full\u group\u by
被默认为enable,我有点不知所措

我有一个查询,我想选择每组的第一行:

SELECT
    w.work_id, w.`name`, CONCAT(r.recording_id, '/', r.seo_url)
FROM
    work w
    JOIN recording r ON w.work_id = r.work_id
    JOIN `release`rl ON r.release_id = rl.release_id 
WHERE
    r.is_performer = 1 and r.is_video = 0
ORDER BY
    w.work_id, rl.released_date_year is null, rl.released_date_year, rl.released_date_month is null, rl.released_date_day is NULL, rl.released_date_day
结果集看起来像

| work_id | name     | href             |
|---------|----------|------------------|
|       1 | Not so   | 1/not-so         |
|       2 | The moon | 2/the-moon       |
|       3 | Why      | 3/why.           |
|       4 | A flower | 4/a-flower       |
|       5 | Hello    | 46/hello-world   |
|       5 | Hello    | 56/hello         |
|       6 | A ti     | 7/a-ti           |
|       7 | I know   | 8/i-know         |
|       8 | Because  | 9/because        |
|      12 | Morning  | 23/morning-sun   |
|      12 | Morning  | 84/morning-remix |
|      12 | Morning  | 73/morning-beat  |
|      15 | Saturday | 87/i-know        |
|      16 | Night    | 92/because       |
我希望它返回以下内容:

| work_id | name     | href             |
|---------|----------|------------------|
|       1 | Not so   | 1/not-so         |
|       2 | The moon | 2/the-moon       |
|       3 | Why      | 3/why.           |
|       4 | A flower | 4/a-flower       |
|       5 | Hello    | 46/hello-world   |
|       6 | A ti     | 7/a-ti           |
|       7 | I know   | 8/i-know         |
|       8 | Because  | 9/because        |
|      12 | Morning  | 23/morning-sun   |
|      15 | Saturday | 87/i-know        |
|      16 | Night    | 92/because       |
换句话说,我已经按照我想要的方式对行进行了排序,我只需要选择每组的第一行

我如何做到这一点

注: 也有类似的情况,但没有答案
你可以试试这样的东西

选择
w、 工作证,
w、 `name`,
子字符串索引(GROUP_CONCAT(CONCAT(r.recording_id,'/',r.seo_url)),',',1)为href
从…起
工作w
在w.work\u id=r.work\u id上加入录制r
在r.release\u id=rl.release\u id上加入'release`rl
哪里
r、 is_performer=1,r.is_video=0
按w.work\U id分组
订购人
w、 工作id、rl.发布日期、年份为空,rl.发布日期、年份、rl.发布日期、月份为空,

rl.released_date_day为空,rl.released_date_day

在5.7之前,您的工作查询是什么?在5.7中,您可以使用行号模拟为每个组选择第一个,但我在输出数据中没有看到任何可以称为组的内容-如果您添加来自3个源表的样本数据,这将有所帮助