排序列和 0 最后出现在 case when
sort column and 0 come at last with case when
如何排序列和0最后出现在什么时候?
以下是查询:
SELECT iAdminID
, vFirstName
, vLastName
, iRank
FROM tbl_admin
WHERE eDeleted = 'No'
AND eStatus = 'Active'
ORDER
BY CASE WHEN iAdminID = 1
THEN 0
ELSE iRank=0 END
以下是上述查询的结果:
But what I want is, first record should be as it is and others should
be according to iRank (1,2,3,4,5,6,7,8,0,0,0,0)
一个简单的方法是使用多个排序级别。
你可以这样做:
order by
case when iAdmin = 1 then 0 else 1 end,
case when iRank = 0 then 1 else 0 end,
iRank
在MySQL中也可以这样表示:
order by
(iAdmin = 1) desc,
iRank = 0,
iRank
最后一个选项:如果您事先知道 iRank
的上限(例如,iRank
永远不会大于 1000),那么您可以跳过一级:
order by
(iAdmin = 1) desc,
case when iRank = 0 then 1000 else iRank end
如何排序列和0最后出现在什么时候? 以下是查询:
SELECT iAdminID
, vFirstName
, vLastName
, iRank
FROM tbl_admin
WHERE eDeleted = 'No'
AND eStatus = 'Active'
ORDER
BY CASE WHEN iAdminID = 1
THEN 0
ELSE iRank=0 END
以下是上述查询的结果:
But what I want is, first record should be as it is and others should be according to iRank (1,2,3,4,5,6,7,8,0,0,0,0)
一个简单的方法是使用多个排序级别。
你可以这样做:
order by
case when iAdmin = 1 then 0 else 1 end,
case when iRank = 0 then 1 else 0 end,
iRank
在MySQL中也可以这样表示:
order by
(iAdmin = 1) desc,
iRank = 0,
iRank
最后一个选项:如果您事先知道 iRank
的上限(例如,iRank
永远不会大于 1000),那么您可以跳过一级:
order by
(iAdmin = 1) desc,
case when iRank = 0 then 1000 else iRank end