查询表,但首先列出特定的ID

时间:2011-07-02 06:21:12

标签: php mysql sql-order-by

我的数据库中有一个表,名为“folders”。

如何创建输出所有内容但始终首先列出特定ID的查询?

让我们首先列出我想要列出的文件夹ID“12345”。

我目前使用它:

mysql_query("SELECT id, name FROM folders WHERE memberid='$session_userid' ORDER BY name ASC ") or die(mysql_error());

我试图谷歌它,但没有出现,我完全空白:(

2 个答案:

答案 0 :(得分:4)

您只需为您的特殊条件添加另一个ORDER BY子句。任何为“首选”记录提供一个值的表达式和所有其他记录的第二个值都可以使用。

mysql_query("SELECT id, name FROM folders
    WHERE memberid='$session_userid'
    ORDER BY IF(id=12345, 1, 2), name ASC") or die(mysql_error());

答案 1 :(得分:0)

ORDER BY FIELD()允许按自定义值对行进行排序,因此这应该有效:

SELECT id, name 
FROM folders 
WHERE memberid='$session_userid' 
ORDER BY FIELD( id, '12345' ) DESC , name ASC

如果你需要首先列出2个文件夹(假设id1 ='12345',id2 ='23456'),查询将是

SELECT id, name 
FROM folders 
WHERE memberid='$session_userid' 
ORDER BY FIELD( id, '12345' , '23456' ) DESC , name ASC

EDITTED:在ORDER BY FIELD()中添加了“DESC”。 ASC是默认值,id =“12345”的文件夹将最后列出!