MySQL同时按两个不同的字段排序

时间:2016-09-27 12:19:32

标签: php mysql sql-order-by

我试图显示数据库中的项目,这是一个例子

user | 123 | abc Jack | 0 | b John | 0 | c Doe | 1 | a

我希望它在网站上显示的方式是这样的

user | 123 | abc Doe | 1 | a Jack | 0 | b John | 0 | c

我想通过abc(abc = 1)和123(猫然后然后鸡)来命令

提示:

abc 0 1

123 有多种内容,例如: cat 等。

该字段未命名为123它只是一个示例,这是我现在正在使用的查询:SELECT * FROM users order by paid = 1,animal =' cat',animal =' dog'它首先带来付费用户,但不是动物订购

5 个答案:

答案 0 :(得分:0)

文档中对此进行了解释:

SELECT * FROM t1
ORDER BY key_part1,key_part2,... ;

有关更复杂的订购,请参阅此处:

http://dev.mysql.com/doc/refman/5.7/en/order-by-optimization.html

答案 1 :(得分:0)

这应该有效:

ORDER BY abc, 123

由于ASC是默认值,因此您无需在您的情况下编写ASC。

答案 2 :(得分:0)

您需要使用~ORDER BY 123 DESC和abc ASC`

用您的表名替换test

select t.user,t.123,t.abc from test t order by t.123 DESC,t.abc ASC

Demo SQL Fiddle

输出

user    123     abc
Doe     1        a
Jack    0        b
John    0        c

答案 3 :(得分:0)

drop table users;
create table users (name varchar(5),animal varchar(10),paid int);
insert into users values
('abc','dog',1),
('def','dog',0),
('ghi','chicken',0),
('jkl','cat',0);

select * from users 
order by paid desc,
        case 
            when animal = 'cat' then 1
            when animal = 'dog' then 2
            when animal = 'chicken' then 3
        end

结果

+------+---------+------+
| name | animal  | paid |
+------+---------+------+
| abc  | dog     |    1 |
| jkl  | cat     |    0 |
| def  | dog     |    0 |
| ghi  | chicken |    0 |
+------+---------+------+

答案 4 :(得分:0)

选择a.user,a.123,a.abc从a.123 DESC,a.abc ASC测试订单