首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >随机排列MYSQL结果

随机排列MYSQL结果
EN

Stack Overflow用户
提问于 2012-02-27 04:51:52
回答 4查看 20K关注 0票数 7

下面的代码显示随机的数据库图像以及一个特定的图像(这就是我想要的)。我如何在数据库查询后混洗这些结果,因为图像ID 11总是首先显示?我希望图像ID 11在其他图像中随机显示。

我可以使用SHUFFLE()吗?如果是这样的话,我现在到底应该把它放在哪里?

任何帮助都将被视为仍在学习PHP

谢谢。

代码语言:javascript
运行
复制
<?php 

mysql_connect("", "", "") or die(mysql_error()) ; 
mysql_select_db("images") or die(mysql_error()) ;


$photo=mysql_query("SELECT * FROM `profile_images` ORDER BY (ID = 11) DESC, RAND()      
LIMIT 7");


while($get_photo=mysql_fetch_array($photo)){ ?>

<div style="width:300px;">


<img src="<? echo $get_photo['url']; ?>">


</div>

<? } ?>
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-02-27 04:57:05

您可以在将它们检索到php之后对它们进行混洗。

代码语言:javascript
运行
复制
$photos = array();
while ($get_photo = mysql_fetch_array($photo))
    $photos[] = $get_photo;

shuffle($photos);

或者,您可以使用子查询完成此操作:

代码语言:javascript
运行
复制
SELECT A.* FROM (
    SELECT * FROM `profile_images` 
    ORDER BY (ID = 11) DESC, RAND()      
    LIMIT 7
) as A
ORDER BY RAND()
票数 12
EN

Stack Overflow用户

发布于 2014-10-15 16:17:14

如果你只是举个例子,它不需要那么复杂

代码语言:javascript
运行
复制
SELECT * FROM tbl_table ORDER BY RAND()

这将使您的数据随机化。如果你想限制你显示的图片数量,那么只需输入:

代码语言:javascript
运行
复制
SELECT * FROM tbl_table ORDER BY RAND() LIMIT 6
票数 9
EN

Stack Overflow用户

发布于 2012-02-27 05:07:03

  1. 首先选择特定的图像,然后合并随机收集的其他6张图像。,
  2. When,rand(),你按顺序排序,所有的行都有唯一的随机值进行排序,所以子组不会排序。因此,如果存在rand(),那么在order by子句中使用更多列将不起作用。因此,我对结果使用了别名,并对其重新排序。

请参阅查询

代码语言:javascript
运行
复制
(SELECT * 
 FROM   `profile_images` 
 WHERE  id = 11 
 LIMIT  1) 
UNION 
(SELECT * 
 FROM   (SELECT * 
         FROM   `profile_images` 
         WHERE  id != 11 
         ORDER  BY Rand() 
         LIMIT  6) `t` 
 ORDER  BY id DESC) 
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9457029

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档