下面的代码显示随机的数据库图像以及一个特定的图像(这就是我想要的)。我如何在数据库查询后混洗这些结果,因为图像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>
<? } ?>发布于 2012-02-27 04:57:05
您可以在将它们检索到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()发布于 2014-10-15 16:17:14
如果你只是举个例子,它不需要那么复杂
SELECT * FROM tbl_table ORDER BY RAND()这将使您的数据随机化。如果你想限制你显示的图片数量,那么只需输入:
SELECT * FROM tbl_table ORDER BY RAND() LIMIT 6发布于 2012-02-27 05:07:03
rand(),,,,你按顺序排序,所有的行都有唯一的随机值进行排序,所以子组不会排序。因此,如果存在rand(),那么在order by子句中使用更多列将不起作用。因此,我对结果使用了别名,并对其重新排序。请参阅查询
(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) https://stackoverflow.com/questions/9457029
复制相似问题