Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 查询表,但首先列出特定id_Php_Mysql_Sql Order By - Fatal编程技术网

Php 查询表,但首先列出特定id

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

我的数据库中有一个名为“文件夹”的表

如何生成一个输出所有内容但总是首先列出特定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 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
可以得到相同的结果,只需将发生的事情弄清楚即可。