mysql数据库怎么可以两个条件排序?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql数据库怎么可以两个条件排序?相关的知识,希望对你有一定的参考价值。

select * from mysql order by time descselect * from mysql order by id desc我希望让time居先ID居后排列这样可以吗 select * from mysql order by time,id desc各位帮我解决下啊 谢谢了!

可以的,order by多个字段规则是这样的,用逗号分隔每一个字段,如果字段不指明排序方式,默认是增序。排序的方法是先按第一个字段排序,如果有相同的再按后续的字段依次排序。

举个例子 

按照c1排序的结果如上图,然后我们按照c1增序,c2降序排列,结果如下:

参考技术A 在数据库查询时,常常需要排序,而有时排序条件可能有多个。
  如数据库:
  a b
  1 103
  1 101
  2 201
  2 203
  1 102
  2 202
  排序后: a b
  1 103
  1 102
  1 101
  2 203
  2 202
  2 201
  语句:
  SELECT A.a , A.b FROM TABLE A ORDER BY A.a ASC , A.b DESC
  其中ASC连接多条排序,且与后一条查询之间有逗号隔开!
参考技术B 今天又测试了一下,使用utf8字符集创建的表或者字段使用的是utf8字符集,中文的排序是不正确的,如果表和字段是gbk字符集,则可以正确的排序。
mysql> create table tt_character (name varchar(20)) default charset gbk;
Query OK, 0 rows affected (0.03 sec)

mysql> create table tt_character1 (name varchar(20)) default charset utf8;
Query OK, 0 rows affected (0.04 sec)

mysql> insert into tt_character values('兰州'),('安徽'),('江西');
Query OK, 3 rows affected (0.00 sec)
Records: 3 Duplicates: 0 Warnings: 0

mysql> insert into tt_character1 values('兰州'),('安徽'),('江西');
Query OK, 3 rows affected (0.00 sec)
Records: 3 Duplicates: 0 Warnings: 0

mysql> select * from tt_character1 order by name;
+------+
| name |
+------+
| 兰州 |
| 安徽 |
| 江西 |
+------+
3 rows in set (0.00 sec)

mysql> select * from tt_character order by name;
+------+
| name |
+------+
| 安徽 |
| 江西 |
| 兰州 |
+------+
3 rows in set (0.00 sec)
参考技术C select * from mysql order by 字段一 asc ,字段二 asc,字段三 desc; 参考技术D select * from mysql order by time desc,id desc

mysql 对符合条件的字段进行排序

使用ztree时,order by name将父节点与子节点都进行了排序,实际需求是只对子节点(is_parent=0)的name排序,sql语句要怎么写呢?

前面加个条件判断不行么?select * from table_name where is_parent=0 order by name
如果父节点也需要查出来,可以用union all来做个合并查询追问

当然父节点也要查出来,不然怎么形成树呢?除了union all没别的方法了吗?在网上也有搜到
order by(case when....)多条件排序,我就是没搞清我现在遇到的这种情况算不算多条件排序?
我想这样写select * from table_tree order by(case when is_parent=0 then name else end ),觉得用order by(case when...)应该能实现我的需求,可是我这样写报错了。如果能实现要怎么写?

追答

SELECT*FROM tablename
WHERE is_parent=0 OR is_parent!=0
ORDER BY
CASE WHEN is_parent=0 THEN name END DESC,
CASE WHEN is_parent!=0THEN column_b END DESC

column_b是父节点希望排序的字段,你可以随便写个

参考技术A 换一种思路
1,父节点一个view ,没有排好序
2,子节点一个view,排好序了
3,父节点和子节点view连接一下查询

以上是关于mysql数据库怎么可以两个条件排序?的主要内容,如果未能解决你的问题,请参考以下文章

mysql 对符合条件的字段进行排序

django中怎么使用两个限定条件在mysql数据库中进行查询

mysql中,先分组,按某个字段计数,然后把计算出的数求和,怎么写,

MySQL联合索引生效的条件、索引失效的条件

mysql多条件替换

用PHP+mysql查询两个表,然后怎么样把已经查出来的两个数组合并在一起,两张表里有一个相同的字段