Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.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 SQL记录被强制放在结果列表中的特定位置_Php_Mysql - Fatal编程技术网

一条PHP SQL记录被强制放在结果列表中的特定位置

一条PHP SQL记录被强制放在结果列表中的特定位置,php,mysql,Php,Mysql,我有一个SQL表;它不是很长,所以我在一个while循环中用RAND对它进行排序 现在,我希望一个特定的记录始终位于(例如)使用PHP查询创建的列表中的第四位 因此,结果必须是一个列表,其中前3个必须用RAND选择,第4个必须始终是一个特定记录,然后结果必须再次用RAND排序 我可以在表中添加额外的列来实现这一点 可能吗 好的,以下是我尝试过的: 我有一个数据库表: +----+---------+ | id | cars | +----+---------+ | z | Opel

我有一个SQL表;它不是很长,所以我在一个while循环中用RAND对它进行排序

现在,我希望一个特定的记录始终位于(例如)使用PHP查询创建的列表中的第四位

因此,结果必须是一个列表,其中前3个必须用RAND选择,第4个必须始终是一个特定记录,然后结果必须再次用RAND排序

我可以在表中添加额外的列来实现这一点

可能吗

好的,以下是我尝试过的:

我有一个数据库表:

+----+---------+
| id |  cars   |
+----+---------+
| z  | Opel    |
| z  | Audi    |
| a  | VW      |
| z  | Ford    |
| c  | Skoda   |
| z  | Renault |
+----+---------+
我希望大众在1号位置,然后是一辆随机的车,然后是斯柯达,然后是其他的

但是

产出大众、斯柯达和其他品牌

我也试过:

ORDER BY CASE
  WHEN id = 'a' THEN id
  WHEN id = 'b' THEN id
  WHEN id = 'c' THEN id
  WHEN id = 'z' THEN RAND()
END DESC
但是结果是一样的,它经过b,因为没有


有什么想法吗?

我建议让我们看看你迄今为止的尝试。一个关键因素是要知道你如何选择“特殊”记录在位置4。如果你的问题是“可能吗?”答案是肯定的。软件中的任何东西都是可能的。正如BigScar所说,给我们看更多。一个节拍,谢谢你更好的编辑!
ORDER BY CASE
  WHEN id = 'a' THEN id
  WHEN id = 'b' THEN id
  WHEN id = 'c' THEN id
  WHEN id = 'z' THEN RAND()
END DESC