取数据的时候遇到了一个问题,groupby取数据不知道取得是哪一条,哪怕from后面的查询已经orderby了,但是竟然取了中间的一条,这到底是什么问题,有没有大佬能解答一下
这个是没有用groupby查询出来的结果
这个是用groupby查询出来的结果,不知道为啥取了中间的数据
SELECT
cl.add_time,
cl.`event`,
cl.classroom_id,
cl.teacher_id,
cl.type
FROM
( SELECT * FROM fun_through_card_log ORDER BY add_time desc ) cl
WHERE
cl.`event` != 1
group by 是聚合查询的。当使用的group by 后select的字段只能是groupby的字段和聚合函数(sum,count,avg,max)等。你的这种写法在mysql中执行不报错,但在oracle等其他数据库中是会报错的。
eg: 一个班级有多个学生。根据group by年级后,应该查某个年级有多少学生 或最大年龄等(select 年级,count(1), max(age) from table group by 年级)。
如果你在select 后面加一个学生名称(select 年级,count(1), max(age),学生姓名 from table group by 年级),这种查询就没有意义的了。
你上面的图,代码右边不完整
下面的图,没有group by
按理说,你的sql错的,因为select了非聚合的列。
你这是利用了mysql的漏洞,如果是oracle,你这都是报错的sql