mysql查询表的列名,顺序不对?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql查询表的列名,顺序不对?相关的知识,希望对你有一定的参考价值。
mysql查询表的列名,顺序不对,正常的如横向图,如何让查询出来的列名按建表的列名顺序显示,由于有多个表格需求,单个建视图处理太麻烦。
information_schema.columns表中有一个ordinal_position字段,表示的是列标识号,其实就是字段编号,你可以看看这些字段标号是不是按照你现在有字段顺序摆列的,如果是,那么用ordinal_position排序就可以了。如果不是,而是按照你查询information_schema.columns表的顺序编的号,那么可能在建表后有过插入字段(比原来表中没有第四题字段一类的),或者修改字段名称(这个也可能修改字段编号),那么就将数据备份重建该表,这样应该就没有问题了,不过可能也需要按照ordinal_position排序。 参考技术A 我也刚遇到这个问题。重建索引的时候重启了(时间太长,以为故障了),然后列名顺序就神经病的和创建的时候不一样了。后来就重装了mysql,重建了数据表,发现还是一个样子。后来发现乱了的列表名是按ascii的顺序排列的,才想起来这次建数据库的时候选了个数据库排序规则,上一次选没选就没印象了。以前是从information_schmema里查询的(估计就是排序规则影响了这个顺序,所以输出的列表不对)。后来发现在命令行界面用DSC table_name的时候显示的列名顺序是正确的,然后就自建了个函数,把这个命令的执行结果取出来加工了下,生成了一个列名list。注:返回的列名是在Field里,不区分大小写的忽略。
MySQL-基本查询条件查询排序查询
基本查询:
SELECT * FROM 表名;
SELECT DISTINCT 列名 FROM 表名
SELECT 列名1 as 新列名1,列名2 as 新列名2,… FROM 表名
条件查询:
SELECT 列名1,列名2,…
FROM 表名
WHERE 查询条件
为了进行模糊匹配查询,MySQL提供了LIKE关键字配合通配符来实现。其中通配符有两个,一个是“%”代表从0个到任意多个字符,另一个是“_”代表某一个字符。另外,可以将LIKE关键字结合逻辑非运算符NOT或!进行查询。
MySQL中提供了关键字IS NULL的空值查询,用来查询某字段为空值的记录;还可以使用NOT IN NULL查询非空值字段。
排序查询:
SELECT字段列表
FROM 表名
WHERE 查询条件
ORDER BY {列名1|列号 [ASC | DESC ]},[{列名2|列号[ASC | DESC ]}],…
ASC:表示对排序字段按升序进行排序(默认);
DESC:表示对排序字段按降序进行排序。
select sno as 学号,sname as 姓名,ssex as 性别,sage as 年龄 from student
select sno,sname,sage from student
select sname,sage from student where sage<20
select sno from sc where score<60
select sname,sage from student where sage>18 and sage<20
select sname,sno,ssex from student
select sno,sname from student where sname like '张__'
select sno,sname from student where not sname like '张%'
select sno,sname from student where sage<20 and ssex='男'
select sno,sname,sage from student where sage in (18,20,21)
- 查询年龄分别是18、20、21岁的学生学号、姓名和年龄
- 查询男的20岁以下的学生学号、姓名
- 查询所有不姓“张”的学生学号、姓名
- 查询姓“张”且全名为3个汉字的学生学号、姓名
- 查询所有学生的姓名、学号和性别
- 查询所有年龄在18至20岁之间学生姓名和年龄
- 查询考试成绩不及格学生的学号
- 查询所有年龄在20岁以下学生的姓名及年龄
- 查询所有学生的学号、姓名和年龄
- 查询学生表所有内容,并将字段名称使用中文别名“学号、姓名、性别、年龄”
以上是关于mysql查询表的列名,顺序不对?的主要内容,如果未能解决你的问题,请参考以下文章