order by是用来排序的。
order by 可以对好几种类型排序。
1.对数字和日期进行排序。
2.对汉字(按字母顺序,按字母的全拼排);
3.对字符型的数字(从左到右的排序);
4.对NULL的排序(重点)。
在细讲之前还是提一下,在使用order BY 的时候,有两种排序的方式:一是升序排列;二是降序排列。你如果想按照升序排列,你可以用 order by 列名 asc,你也可以什么都不用,因为系统默认的排序方式是升序排列。如果你想要的降序排列,可以用 order by 列名 desc,但是如果你不想在后面使用‘desc’也想要降序排列。
看到了有一道题:就是不使用‘desc’也要得出成绩是降序的排列,当时在我脑中出想的是:可以用每个成绩减去最高的那个分数,得到的负数,数越小负的就越多,这样也可以得到降序排列。其实最后出来的答案更简单,就是小小的一个符号就解决了。order by -成绩,就是这个‘-’就可以了,可见数据库是多么的灵活。
对于第一种呢,对数字和日期的排序么有什么难点就是按照一般数字的大小排序,只要你会数数就可以简练它是否正确。日期也差不多,如:2009-09-8 2009-08-08两者比较。他们是从左向右一次比较的。
对汉字的排序,更精确的说它是按汉字的全拼进行排序,也是按ASCII来排序。
对字符型的数字排序就和我们平时的思维有一点不同了,例如:1,12,4,3,23,2,21
排序结果是:1,12,2,21,23,3,4。 它们的排序是从左向右的。
NULL数据库不是万能的,它对这个null就有一点没有办法了,因为他也不知道该把它放在那个位置合适,一般我们没有给它转换的时候,它一般都会出现在第一排和最后一排。所以一般我们在进行排序的时候都要对null转换[order by is null(列名,0)]。也就是在空间中把null的值转换成0 。当然转换的值是不确定的,他是根据你的需求来给值的。
当然排序还有单列排序和多列排序。
但序排列很简单,就是 select 列A 列B 列C from 表名 order by 列A。但需排列显示的是单行的,多行排序可以显示多行信息。
select 列A 列B 列C from 表名 order by 列A 列B...
列A先排序当出现相同的信息的时候,进行排列B的信息,再拍后面的。这样类推,直到排列完成。在这里面也可以使用asc、desc .
order by 还有一个很好玩的地方。就是:
select 列A 列B 列C from 表名 order by <字段名>;
这样子很简单,可是一般不用这个,上级也不允许。因为:如果有人把前面的列名改掉了,后面的也会出错。
order by 的用处很大,用的地方也很多。大家要谨记哦。
order by 可以对好几种类型排序。
1.对数字和日期进行排序。
2.对汉字(按字母顺序,按字母的全拼排);
3.对字符型的数字(从左到右的排序);
4.对NULL的排序(重点)。
在细讲之前还是提一下,在使用order BY 的时候,有两种排序的方式:一是升序排列;二是降序排列。你如果想按照升序排列,你可以用 order by 列名 asc,你也可以什么都不用,因为系统默认的排序方式是升序排列。如果你想要的降序排列,可以用 order by 列名 desc,但是如果你不想在后面使用‘desc’也想要降序排列。
看到了有一道题:就是不使用‘desc’也要得出成绩是降序的排列,当时在我脑中出想的是:可以用每个成绩减去最高的那个分数,得到的负数,数越小负的就越多,这样也可以得到降序排列。其实最后出来的答案更简单,就是小小的一个符号就解决了。order by -成绩,就是这个‘-’就可以了,可见数据库是多么的灵活。
对于第一种呢,对数字和日期的排序么有什么难点就是按照一般数字的大小排序,只要你会数数就可以简练它是否正确。日期也差不多,如:2009-09-8 2009-08-08两者比较。他们是从左向右一次比较的。
对汉字的排序,更精确的说它是按汉字的全拼进行排序,也是按ASCII来排序。
对字符型的数字排序就和我们平时的思维有一点不同了,例如:1,12,4,3,23,2,21
排序结果是:1,12,2,21,23,3,4。 它们的排序是从左向右的。
NULL数据库不是万能的,它对这个null就有一点没有办法了,因为他也不知道该把它放在那个位置合适,一般我们没有给它转换的时候,它一般都会出现在第一排和最后一排。所以一般我们在进行排序的时候都要对null转换[order by is null(列名,0)]。也就是在空间中把null的值转换成0 。当然转换的值是不确定的,他是根据你的需求来给值的。
当然排序还有单列排序和多列排序。
但序排列很简单,就是 select 列A 列B 列C from 表名 order by 列A。但需排列显示的是单行的,多行排序可以显示多行信息。
select 列A 列B 列C from 表名 order by 列A 列B...
列A先排序当出现相同的信息的时候,进行排列B的信息,再拍后面的。这样类推,直到排列完成。在这里面也可以使用asc、desc .
order by 还有一个很好玩的地方。就是:
select 列A 列B 列C from 表名 order by <字段名>;
这样子很简单,可是一般不用这个,上级也不允许。因为:如果有人把前面的列名改掉了,后面的也会出错。
order by 的用处很大,用的地方也很多。大家要谨记哦。