Php 查询表,但首先列出特定id
我的数据库中有一个名为“文件夹”的表 如何生成一个输出所有内容但总是首先列出特定ID的查询 让我们使用ID“12345”作为我想首先列出的文件夹 我目前使用的是:Php 查询表,但首先列出特定id,php,mysql,sql-order-by,Php,Mysql,Sql Order By,我的数据库中有一个名为“文件夹”的表 如何生成一个输出所有内容但总是首先列出特定ID的查询 让我们使用ID“12345”作为我想首先列出的文件夹 我目前使用的是: mysql_query("SELECT id, name FROM folders WHERE memberid='$session_userid' ORDER BY name ASC ") or die(mysql_error()); 我试着用谷歌搜索它,但没有结果,我完全是空白:(您只需要为您的特殊条件添加另一个ORDER BY
mysql_query("SELECT id, name FROM folders WHERE memberid='$session_userid' ORDER BY name ASC ") or die(mysql_error());
我试着用谷歌搜索它,但没有结果,我完全是空白:(您只需要为您的特殊条件添加另一个
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());
ORDER BY FIELD()允许按自定义值对行进行排序,因此应该可以:
SELECT id, name
FROM folders
WHERE memberid='$session_userid'
ORDER BY FIELD( id, '12345' ) DESC , name ASC
如果需要首先列出两个文件夹(比如id1='12345'和id2='23456'),则查询将是
SELECT id, name
FROM folders
WHERE memberid='$session_userid'
ORDER BY FIELD( id, '12345' , '23456' ) DESC , name ASC
编辑:在ORDER BY字段()中添加了“DESC”。默认情况下,id=“12345”的文件夹将列在最后!我尝试过,没有输出任何内容,没有错误或任何内容。:mysql_query(“从文件夹中选择id,名称,其中memberid=”$session_userid“ORDER BY IF(id=6PRN8Z),name ASC)或die(mysql_error());@Ken-您需要
IF(id=12345,1,2)
,而不仅仅是如果(id=6PRN8Z)
。事实上,你需要在6PRN8Z
周围加上单引号,因为它不是一个普通的数字,所以可以修复它。1,2
是什么意思?@Ken-当条件为真时表达式只返回1
,当条件为真时表达式返回2
。因为默认的排序顺序是ASC
,这将记录放在id=12345
首先。使用-5
和1000
或'A'
和'Z'
1
和2
可以得到相同的结果,只需将发生的事情弄清楚即可。