我有这个查询,将通过它的可以排序的ID显示表的内容,但我有这样一个数据,我总是希望显示在最后一部分,由于某些情况,我不能简单地将其排序ID更改为最后一个数字。SQL查询,其中一个项目总是放在最后
样本表将是:
sort_id | data |
0 | dog |
1 | cat |
2 | bear |
3 | wolf |
我想这显示如下:狗,猫,狼,熊在那里熊是,应始终上次显示的恒定值。
这可能吗?
我有这个查询,将通过它的可以排序的ID显示表的内容,但我有这样一个数据,我总是希望显示在最后一部分,由于某些情况,我不能简单地将其排序ID更改为最后一个数字。SQL查询,其中一个项目总是放在最后
样本表将是:
sort_id | data |
0 | dog |
1 | cat |
2 | bear |
3 | wolf |
我想这显示如下:狗,猫,狼,熊在那里熊是,应始终上次显示的恒定值。
这可能吗?
SELECT * FROM table1 ORDER BY data='bear',sort_id
+1不错。当然这只适用于MySQL,而且这个案例在所有的方面都有效。 – 2013-04-29 20:31:06
这到底会做什么? – magicianiam 2013-04-29 20:32:12
@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
像下面
SELECT data
FROM table
ORDER BY
CASE WHEN data = 'bear' THEN 1 ELSE 0 END,
sort_id
我们需要引入排序是否该概念数据是"bear"
或之前我们排序sort_id
。
你会介意给我解释一下吗?这是我在sql中遇到的第一个案例。谢谢 – magicianiam 2013-04-29 20:30:04
@magicianIam这里是案例参考[13.6.5.1。 CASE Syntax](http://dev.mysql.com/doc/refman/5.0/en/case.html) – 2013-04-29 20:33:00
谢谢你:) – magicianiam 2013-04-29 20:42:13