mysql - 如何按照我的需要对 MySQL 查询的结果进行排序?

标签 mysql sorting

这是我拥有的数据;

type      valid blocked
--------- ----- --------
CPI       0     0
CPI       1     0
CPI       0     1
CPI       1     1
CPA       0     0
CPA       1     0
CPA       0     1
CPA       1     1
CPE       0     0
CPE       1     0
CPE       0     1
CPE       1     1
PIN       0     0
PIN       1     0
PIN       0     1
PIN       1     1

这是我想要的排序方式;

type      valid blocked
--------- ----- --------
CPI       1     0
CPA       1     0
CPI       1     1
CPA       1     1
CPI       0     0
CPA       0     0
CPI       0     1
CPA       0     1
CPE       1     0
CPE       1     1
CPE       0     0
CPE       0     1
PIN       1     0
PIN       1     1
PIN       0     0
PIN       0     1

所以,CPI 和 CPA 先按有效排序,然后再解锁。接下来,其 CPI 按有效排序,然后解锁,最后按 PIN 排序,再次按有效和解锁排序。

是否可以在一个查询中像这样排序?谢谢。

最佳答案

select * from your_table
order by case when type in ('CPI','CPA') then 1
              when type = 'CPE' then 2
              when type = 'PIN' then 3
         end,
         valid <> 0, 
         blocked

关于mysql - 如何按照我的需要对 MySQL 查询的结果进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28673658/

相关文章:

python - 按键对列表进行排序并在不重新计算的情况下取出值

mysql - 从 sql 备份文件更新 1 列

php - 根据特定条件运行 SQL 查询并仅删除 x 行?

java - 排序列表后,如何将列表中的对象取回它们原来的位置?

java - 在java中对数字字符串间隔进行排序

sql - 使用 GROUP BY 连接两个 SQL 表未达到预期结果

mysql - phpmyadmin 和 vb.net 上的相同查询得到不同的结果

Mysql - 排除计数>值但显示所有行

MySQL:检索与其关联的 x 个 user_ids 的 ID

javascript - 在 JavaScript 中按定义值数组列表对对象数组进行排序