SQL 如何根据两个字段排序

说白了,SQL排序就这几种玩法,跟搭积木似的。

先用qnet和price这两个字段练手,升序降序得会,去年我们跑的那个电商项目,光排序优化就提了5 %的查询速度。
当你看到order by后面的第一个字段,它决定了整体排序的主旋律——比如qnet升序,整个结果集就跟着qnet从小到大排;然后第二个字段price就负责在qnet值相同的情况下,按价格再细分。
另外一点要注意,"先降序再升序"这种组合其实挺坑的,去年团队踩过坑,用qnetdesc,priceasc时,发现数据乱序,后来查是数据库默认先按qnet降序,再混入price升序,用order by qnet desc, price才对。

我一开始也以为"降序加升序"肯定很特殊,后来发现其实只要记住"多个排序条件是依次执行的"就行,就像先按年级(qnet)分班,再按成绩(price)排座位。
等等,还有个事,如果字段特别多,比如"按地区降序,再按销量降序,最后按下单时间升序",别硬记,用"从左到右依次执行"这个口诀就行。

建议多跑跑EXPLAIN,看看索引用得对不对,有时候加个索引就能让3 000量级的数据从3 秒变0.5 秒。

如何用sql将两张表的字段名和列值进行匹配?

这就是坑。
别信。
别这么干。

有没有办法在sql语句中将两个字段的值连接

直接用加号连接字段是错的。
会转成数字算数。

上周刚处理一个,加号搞坏过几次。
字段类型不匹配就炸。

MySQL用CONCAT。
写法固定,别乱。

SQL Server用+,但字段得是字符串类型。

Oracle和PostgreSQL用||。
这个靠谱。

自己看哪种用着顺手。
先这样。