sql里的排序倒序的命令是order by啥

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql里的排序倒序的命令是order by啥相关的知识,希望对你有一定的参考价值。

order by子句是指定查询的排序。
ORDER BY 语句用于对结果集进行排序。
ASC:升序(默认),DESC:降序。
ORDER BY 语句默认按照升序对记录进行排序。
如果希望按照降序对记录进行排序,可以使用 DESC 关键字。
参考技术A order by [列名] desc
desc 就代表倒序
asc 代表升序
缺省值也为升序
请采纳!
参考技术B order by desc

GROUP BY changesChanges ORDER BY排序

我有一个用PHP和MySQL编写的Web应用程序。

一个SQL命令(如下所述)的结果是这样的:

enter image description here

SELECT
   t.subject, c.parent_id, c.date_time 
FROM
   tbl_tickets_contents c
JOIN
   tbl_tickets t
ON
   t.id = c.parent_id
ORDER BY
   c.date_time DESC;

我想删除重复的项目。所以我将SQL脚本更改为:

SELECT
   t.subject, c.parent_id, c.date_time 
FROM
   tbl_tickets_contents c
JOIN
   tbl_tickets t
ON
   t.id = c.parent_id
GROUP BY
   c.parent_id
ORDER BY
   c.date_time DESC;  

我假设这个改变会给我这个结果:

enter image description here

但输出是:

enter image description here

似乎GROUP BY更改了ORDER BY排序顺序。我希望有更新的date_time的记录,但在这个改变后,我有更老的date_time记录!

我怎么解决这个问题?我的错是什么?

答案

我修改了你的代码并为我工作。

我将c.date_time更改为MAX(c.date_time) as date_time,以便获得最新的约会时间。

并通过c.date_time改变秩序到date_time

SELECT
   t.subject, 
   c.parent_id, 
   MAX(c.date_time) as date_time 
FROM
   tbl_tickets_contents c
JOIN
   tbl_tickets t
ON
   t.id = c.parent_id
GROUP BY
   c.parent_id
ORDER BY
   date_time DESC;

SQL Fiddle Example

以上是关于sql里的排序倒序的命令是order by啥的主要内容,如果未能解决你的问题,请参考以下文章

sql ORDER BY 多个字段,排序变慢几十倍,求解?

关于mysql获取数据排序order by的问题

mysql 多表 查询 之后 group by 分组 order by 无法按照日期排序

Mysql多字段order by用法

oracle group by 查询 排序

sql中order by 待排序的字段值相同时,发生分页出现重复数据的问题