我的数据库中有一个表,名为“folders”。
如何创建输出所有内容但始终首先列出特定ID的查询?
让我们首先列出我想要列出的文件夹ID“12345”。
我目前使用它:
mysql_query("SELECT id, name FROM folders WHERE memberid='$session_userid' ORDER BY name ASC ") or die(mysql_error());
我试图谷歌它,但没有出现,我完全空白:(
答案 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”的文件夹将最后列出!