SQL里面的排序语句desc和ASC有什么区别

记得上次帮邻居老王打扫菜地时。
他的西红柿有些是红色的,有些是绿色的。
他坚持要安排颜色。
我拿了一个小本子,记下了时间。
六点三十分,太阳斜斜地照着,他说已经落山了。
他说,如果你推红色,你会得到红色,如果你推绿色,你会得到绿色。
但这更容易再次选择。
我看到他把红西红柿放在东边,把好的绿西红柿放在西边。
我心想,数据库就是这样的。
做完后,他拍着手,突然说,哎,特别是那几片果岭,下雨后颜色会变深吗?等等,这让我想起了复合类型,首先是尺寸,然后是颜色。
那一天是2 02 3 年8 月1 5 日,农历七月十五,真是太巧了。

SQL数据排序 - ORDER BY子句

我对你说的有点困惑,看起来很复杂。
我来说说我当时遇到的坑吧。

我记得有一年我正在帮助我的老板使用 MySQL 创建报告。
老板热切地看着我说:“老王,你帮我把这些手表分类一下,价格高的放在前面,钱多的放在前面。

当时我的手在颤抖,我刚写了一些东西? “按价格 DESC、数量 DESC 从订单产品中选择;”老板看见了,立即疑惑地说:“怎么都这么贵?我要看便宜点的!”
我才想起来,这个商品默认是按照降序排列的!我赶紧换成DESC,老板说:“不行,我想看看价格更低的,还有更多的。
”我当时脑子很乱,按照升序和降序来来回回,终于找到了。
我必须这样写:“从订单产品中选择价格 ASC,数量 DESC;”
你看,当时我几乎对这些东西感到疯狂。
后来我想起来了,ORDER BY后面的是什么,升序还是降序,你一定要看清楚。
特别是DESC,不要写错。
还有一个多字段排序功能。
必须一项一项地做,先按一个,再按另一个。
秩序不能被扰乱。

哦,顺便说一句,我对您提到的列名称或列位置感到困惑。
有一次我写了一些东西但无法编辑。
当我看到它时,我想,天哪,我写了一个不存在的列名。
后来我了解到,有时使用数字更容易,例如“ORDER BY 2 DESC, 3 ASC;”这样就不会出现错误,只要知道哪个数字是哪一列即可。

所以我已经克服了你提到的所有陷阱。
记住,别像以前的我一样傻。
您必须执行升序和降序排列、列名称和列位置以及多个字段的排序顺序。
你必须一次只做一件事,并且慢慢来。
别着急,慢慢想,你就会明白。

SQL中截取数字的前两位进行排序

这样,对每个部分进行分类,然后对整体进行分类,其实很容易,但如果细节处理不仔细,就很容易出现问题。

我们先来说说最重要的事情。
去年跑的一个项目,处理3 000条左右的数据时,发现直接使用substr两次,连接排序会使中间结果占用的内存增加一倍,当ID长度很长时,直接降低性能。
还有一点是,如果a和b值重复,比如前两个值都是“aa”,那么后两个b值的顺序就是一个分水岭,不能乱序。
还有另一个重要的细节。
例如,a 是字母,b 是数字。
如果要比较b,则需要将其转换为数字,然后进行比较。
否则,“1 0”将排在“2 ”之前。
用技术术语来说,这称为雪崩效应。
事实上,前面的一点点拖延就会毁掉后面的一切。

一开始我以为用一个临时表来存储两次 substr 的结果就足够了,但后来我意识到这是一个错误,因为排序开销太大了。
相反,它遍历一次记录位置,直接在原始数组上排序,这样效率要高得多。
等等,还有别的事。
如果ID是动态生成的,比如时间戳格式,那么前两位和后两位的稳定性可能没有你想象的那么好。
很多人不注意这一点。

我们建议运行进一步的压力测试来检查内存和 CPU 曲线。
不要只看单个操作是否快。