使用mySQL sql\u mode=only\u full\u group\u by获取组的第一行
在mySQL 5.7.5之前,我能够理解这种类型的查询,但在5.7.5之后,由于选项使用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
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个源表的样本数据,这将有所帮助