2013-04-29 65 views
0

我有这个查询,将通过它的可以排序的ID显示表的内容,但我有这样一个数据,我总是希望显示在最后一部分,由于某些情况,我不能简单地将其排序ID更改为最后一个数字。SQL查询,其中一个项目总是放在最后

样本表将是:

sort_id | data | 
0  | dog | 
1  | cat | 
2  | bear | 
3  | wolf | 

我想这显示如下:狗,猫,狼,熊在那里熊是,应始终上次显示的恒定值。

这可能吗?

回答

4

为了通过case语句将工作

Select * 
FROM 
    table1 
ORDER BY 
    case when data = 'bear' then 1 else 0 End, 
    sort_id 

DEMO

+0

你会介意给我解释一下吗?这是我在sql中遇到的第一个案例。谢谢 – magicianiam 2013-04-29 20:30:04

+0

@magicianIam这里是案例参考[13.6.5.1。 CASE Syntax](http://dev.mysql.com/doc/refman/5.0/en/case.html) – 2013-04-29 20:33:00

+0

谢谢你:) – magicianiam 2013-04-29 20:42:13

2

SELECT * FROM table1 ORDER BY data='bear',sort_id

+1

+1不错。当然这只适用于MySQL,而且这个案例在所有的方面都有效。 – 2013-04-29 20:31:06

+0

这到底会做什么? – magicianiam 2013-04-29 20:32:12

+0

@magicianIam:'data ='bear''如果data不等于“bear”,则返回false(0),否则返回true(1)。 0 <1,所以data <>'bear'的行会在数据='熊'之前出现。是的,正如Condrad Frix提到它是用于MySQL的; 'case'是更通用的方式(如Russ Cam提议),但仍不是绝对通用的(据我记得Access不支持它) – a1ex07 2013-04-29 21:31:26

1

像下面

SELECT data 
FROM table 
ORDER BY 
CASE WHEN data = 'bear' THEN 1 ELSE 0 END, 
sort_id 

我们需要引入排序是否该概念数据是"bear"或之前我们排序sort_id

相关问题