MySql 按 ID 排序,但有例外
MySql ORDER BY ID , but with exception
我有一个应用程序可以从 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)
但是这个查询return什么都没有。
怎么解决的?谢谢
编辑 1
使用这个:
SELECT * FROM question ORDER BY case when id = '7000' then 0 else 1 end
结果是7000,6999,6998...没有显示新题
但我想要 7000、7100、7099、7098...
case
的说法是错误的,应该是
SELECT * FROM question
ORDER BY case when id = '7000' then 0 else 1 end
SELECT *, CASE WHEN id = '7000' then 0 else 1 END as Y FROM question ORDER BY Y
您甚至可以跳过 WHEN 结构,只需将主要排序标准声明为 ID=7000 DESC
,将次要排序标准声明为 ID
SELECT ... ORDER BY ID=7000 DESC, ID DESC LIMIT ...
我有一个应用程序可以从 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)
但是这个查询return什么都没有。
怎么解决的?谢谢
编辑 1
使用这个:
SELECT * FROM question ORDER BY case when id = '7000' then 0 else 1 end
结果是7000,6999,6998...没有显示新题
但我想要 7000、7100、7099、7098...
case
的说法是错误的,应该是
SELECT * FROM question
ORDER BY case when id = '7000' then 0 else 1 end
SELECT *, CASE WHEN id = '7000' then 0 else 1 END as Y FROM question ORDER BY Y
您甚至可以跳过 WHEN 结构,只需将主要排序标准声明为 ID=7000 DESC
,将次要排序标准声明为 ID
SELECT ... ORDER BY ID=7000 DESC, ID DESC LIMIT ...