在MYSQL中有一有表,
id tab1 tab2 tab3 tab4 tab5
1 1 2 3 4 5
2 3 1 2 2 2
3 10 13 5 4 9
4 11 8 7 6 5结果:
id tab 位置
3 13 2
4 11 1
5 10 1
3 9 5
4 8 2
4 7 3有没有用SQL语句实现的??
我现在的思路是Select 5次,然后再对查询结果进行排序 ,可是这样太慢了,有没有别的方法??规律是:把tab1 到tab5中的数据按从大到小排一下,
就是把tab1到tab5中的所有数据进行排序
并把他们在第几个tab中写出来
id tab1 tab2 tab3 tab4 tab5
1 1 2 3 4 5
2 3 1 2 2 2
3 10 13 5 4 9
4 11 8 7 6 5结果:
id tab 位置
3 13 2
4 11 1
5 10 1
3 9 5
4 8 2
4 7 3有没有用SQL语句实现的??
我现在的思路是Select 5次,然后再对查询结果进行排序 ,可是这样太慢了,有没有别的方法??规律是:把tab1 到tab5中的数据按从大到小排一下,
就是把tab1到tab5中的所有数据进行排序
并把他们在第几个tab中写出来
解决方案 »
- 存储过程 循环问题
- mysql临时表插入数据问题
- innodb 表修复问题,select错误ERROR 1033 (HY000):Incorrect information in file: './blog/b
- 我有一个表当数据多时,当更新时老是卡起
- mysql5存储过程语法有误麻烦高手解决
- 请帮忙,我用PHP+MYSQL我想把上传的图片存到服务器的硬盘目录上怎么写,
- MySQL数据库使用何种JDBC DRIVER比较好?
- 一个count的问题
- 请帮忙写一个SELECT语句
- 不安装sql server 或者mysql、,只靠windows 默认的ODBC能否驱动excel表或者是access表?
- mysqld nt.exe 一直拼命上传
- 我的mysql表一查询就挂掉,为什么呢?
select 1,tab1 as tab from tt
union all
select 2,tab2 from tt
union all
select 3,tab3 from tt
union all
select 5,tab4 from tt
union all
select 5,tab5 from tt) a
order by tab是最简单的方法
上述代码中,1-5就是表结构没有设计好,应该id tab tabetype
这样查询就简单了
表的结构没设计好,那要怎么设计呢??
id, tab, tabetype不太明白
1 1 1
1 2 2
1 3 3
1 4 4
1 5 5
2 3 1
2 1 2
2 2 3
2 2 4
2 2 5
....
id tab1 tab2 tab3 tab4 tab5
1 1 2 3 4 5
2 3 1 2 2 2
==>
id(数据本身的PK) tid(原来的ID) tab tabtype
1 1 1 1
2 1 2 2
3 1 3 3
4 1 4 4
5 1 5 5
6 2 3 1
6 2 1 2
6 2 2 3
6 2 2 4
6 2 2 5简而言之,就是不要把这些内容放在不同字段里面(tab1-tab5),而是放在不同行里面,通过添加分类字段来区分(tab, tabetype),这样可以用索引,效率自然就上去了
group_concat(tab2 order by tab2 desc) as t2,
group_concat(tab3 order by tab3 desc) as t3,
group_concat(tab4 order by tab4 desc) as t4,
group_concat(tab5 order by tab5 desc) as t5
from table;
这样字段排序了,其它的读出数据后再解决