MySql ORDER BY ID,但有例外

时间:2015-02-16 09:29:43

标签: php mysql sql-order-by

我有一个应用程序从mysql数据库加载一些结果。我正在使用此查询与php进行此连接:

$query = mysql_query("SELECT * FROM question ORDER BY id DESC LIMIT ".$intLimit)

这没关系。

现在我想要相同的查询但是例如我希望id = 7000的对象保持在最顶层。

我试过了:

$query = mysql_query("SELECT * FROM question ORDER BY id WHEN id = '7000' then 0 else 1 LIMIT ".$intLimit) 

但此查询不返回任何内容。

怎么解决呢?感谢

编辑1

使用:

SELECT * FROM question ORDER BY case when id = '7000' then 0 else 1 end 

结果是7000,6999,6998 ......没有显示新问题

但我想要的东西有7000,7100,7099,7098 ......

3 个答案:

答案 0 :(得分:3)

case语句错误应该是

SELECT * FROM question 
ORDER BY case when id = '7000' then 0 else 1 end 

答案 1 :(得分:1)

您甚至可以跳过WHEN构造,只需将主要排序条件说明为ID=7000 DESC,将次要条件说明为ID

SELECT ... ORDER BY ID=7000 DESC, ID DESC LIMIT ...

答案 2 :(得分:0)

SELECT *, CASE WHEN id = '7000' then 0 else 1 END as Y FROM question ORDER BY Y