如何把SQL的表按行进行排序或进行表的行列转换
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何把SQL的表按行进行排序或进行表的行列转换相关的知识,希望对你有一定的参考价值。
这是部份数据,把他们按升序排列或者行列转换。
1 9 10 17 30 15 18 0
2 9 10 17 30 29 14 0
3 9 10 17 30 29 18 0
4 9 10 17 32 3 18 0
5 9 10 17 32 15 14 0
6 9 10 17 32 15 18 0
7 9 10 17 32 29 24 0
8 9 10 17 32 29 14 0
有几万行数据。望各位高手写得祥细一点。重金导答案
能不能再祥细一点啊。我对这个不是太懂。把语句写祥细一点,好吗?
我试过了,还是不行。我不知道是不是我说得不请楚。我要的是每一行都按升序排列。如果按SELECTE * FROM 表名 order by 的话,到后面来就不对了。我要的是按行的升序排列。也就是说不管哪一行都是升序,按SELECTE * FROM 表名 order by 排序后出现这样的结果,这是我不想要的。(所有的行都按升序排列。)求大家多多回答。谢谢。
462062 1 20 15 29 24 14
462063 1 20 15 29 24 18
462155 1 20 16 19 4 18
462154 1 20 16 19 4 22
462152 1 20 16 19 21 14
462153 1 20 16 19 21 18
462150 1 20 16 19 21 22
462151 1 20 16 19 21 24
462158 1 20 16 19 22 14
这是一个查询语句,将表的所有字段列出(SELECT * FROM 表名)并按指定的字段列表排 ( order by 排序字段名1,排序字段名2,排序字段名3)
另外,您要行列转换,几万条记录没法转换,因为一个几万行的表是可能的,几万列的表就不行了。
********************
1.一行是不能排序的。最少两行排序才有意义。
2.排序后不会前面按顺序,后面就不按顺序了,您说的情况有点怪。
3.怀疑您是否将行与列的定义搞错了?行是记录,列是字段,是这么理解的吗?
4.排序时是先按第一个排序字段排序,在第一个字段相同是,再按第二个排序字段排序,若第一个相同,第二字也相同,就按第三个排序字段排序。难道这样不合您的要求?您想怎么办? 参考技术A SELECT * FROM 表名 order by 排序字段名1,排序字段名2,排序字段名3 这样默认是升序的,如果要降序
SELECT * FROM 表名 order by 排序字段名1,排序字段名2,排序字段名3 desc 就OK了 参考技术B 这是一个简单的Select * From Table_Name Order By 列名 查询,
排序用到关键词 order by 就可以了!
至于行列转换,你这个表是不能的了,因为一个表中,列字符长度总和不能超过8000字节,而你说你这个表有上万条数据,这是远远超过的! 参考技术C 用by order
和REQUEST QUREEY结合。
SQL性能问题.现在表设计可以把一个大表按类型(各类型字段不相同)拆分成多个小表.拆分后比较方便.
问题是.查询的时候查询一个大表和多个小表有误性能差异(各小表查询没有关联关系)?
参考技术A 在数据量大的情况下是有性能差异的,多个小表相当于对大表进行了数据分片,所以不用访问所有大表的数据就可以返回结果。但在数据量小的情况下使用索引扫描性能差异很小。
小表的另一个问题是如果需要在大表上执行全表查询,即跨小表的查询,则小表的数据结构处理可能比较麻烦。追问
小表的数据结构处理可能比较麻烦------指的是什么?
昨天正好测试了下。2个小表查询(各表1W条数据) 和直接一个大表(2W)条数据。没有差异。。
小表的数据结构处理可能比较麻烦,指的是在有些业务逻辑需要查询覆盖多个小表的数据,且无法确定要访问那些小表的时候,查询语句不好写。
1W条数据是很小的量,看不出来差异的,有索引的话访问代价是相同的,一般小表要达到百万级,打表千万级数据量才有差异的
以上是关于如何把SQL的表按行进行排序或进行表的行列转换的主要内容,如果未能解决你的问题,请参考以下文章