随机随机播放MYSQL结果

时间:2012-02-26 20:51:52

标签: php mysql

以下代码显示随机数据库图像以及一个特定图像(这是我想要的)。如何在数据库查询后将这些结果随机播放,因为图像ID 11始终首先显示?我想在其他人之间随机显示图像ID 11。

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

任何帮助都会受到赞赏,因为仍在学习PHP

感谢。

<?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>

<? } ?>

4 个答案:

答案 0 :(得分:8)

你可以将它们检索到php后随机播放。

$photos = array();
while ($get_photo = mysql_fetch_array($photo))
    $photos[] = $get_photo;

shuffle($photos);

或者您可以使用子查询来执行此操作:

SELECT A.* FROM (
    SELECT * FROM `profile_images` 
    ORDER BY (ID = 11) DESC, RAND()      
    LIMIT 7
) as A
ORDER BY RAND()

答案 1 :(得分:5)

如果你只是举例来说它不需要那么复杂

SELECT * FROM tbl_table ORDER BY RAND()

这将使您的数据随机化。如果你想限制你显示的图像数量,那么就把它放在:

SELECT * FROM tbl_table ORDER BY RAND() LIMIT 6

答案 2 :(得分:4)

  1. 首先选择特定图像,然后将随机收集的其他6幅图像合并。
  2. 当您按rand()对某些内容进行排序时,所有行都会获得唯一的随机值进行排序,以便子组不会排序。因此,如果存在rand(),则在order by子句中使用更多列不起作用。因此我使用了别名结果并再次对其进行排序。
  3. 查看查询

    (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) 
    

答案 3 :(得分:1)

首先选择ID为11的图像,然后使用UNION关键字

查询其余图像
SELECT *
FROM Images
Where ID = 11
UNION
SELECT *
FROM Images
WHERE ID != 11