[英]Sql- ordering based on two columns in a table
考虑一个数据库
checkID record_number data Order_number
a 0 1 2
a 1 2 0
a 2 3 1
a 3 4 3
查找根据Order_number列获取记录的查询ieprocedure应返回数据:
having record _number 2 then
having record _number 0 then
having record _number 1 then
having record _number 3
是否有任何加入或其他查询?
SELECT *
FROM tablename
ORDER BY CASE WHEN record_number = 2 THEN 0 ELSE 1 END, record_number;
这将按以下顺序为您提供数据:
| CHECKID | RECORD_NUMBER | DATA | ORDER_NUMBER |
-------------------------------------------------
| a | 2 | 3 | 1 |
| a | 0 | 1 | 2 |
| a | 1 | 2 | 0 |
| a | 3 | 4 | 3 |
select *
from YourTable
order by
case record_number
when 2 then 1
when 0 then 2
when 1 then 3
when 3 then 4
end
你可以在这种情况下使用CASE WHEN 。
SELECT *
FROM tbl
ORDER BY CASE record_number
WHEN 2 THEN 1
WHEN 0 THEN 2
WHEN 1 THEN 3
WHEN 3 THEN 4
END
这是SQL Fiddle DEMO 。
| CHECKID | RECORD_NUMBER | DATA | ORDER_NUMBER |
-------------------------------------------------
| a | 2 | 3 | 1 |
| a | 0 | 1 | 2 |
| a | 1 | 2 | 0 |
| a | 3 | 4 | 3 |
最好的解决方案是创建用于排序检查的附加表,如下所示:
record_number sort_seq
2 1
0 2
1 3
3 4
然后加入你的桌子
select c.*
from check as c
join sortSeq as s on c.record_number=s.record_number
order by s.sort_seq
SELECT *
FROM tablename
ORDER BY Order_number
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.