class和id都有索引索引: 键名 类型 基数 操作 字段 PRIMARY PRIMARY 82780 id class INDEX 124 class
随机查询20条select * from 表名 order by rand() limit 20感觉你的SQL语句没错阿。
select * from 表名 order by rand() limit 20 这样查肯定没错。这个没有group by,没有分组。
group by class 是按class字段分组 rand()是随机和索引没关系吧. 语句在网页,数据库中测试都好使.
php文件 <?php mysql_connect("localhost","root","km820110"); mysql_select_db("ceshi"); $a="select * from biao where class='a' || class='b' || class='c' group by class order by rand()"; $b=mysql_query($a); while ($row = mysql_fetch_array($b)) { echo $row["id"]; echo $row["class"]; echo $row["neirong"]; } ?> 数据库文件 create database ceshi create table biao ( id int auto_increment, class varchar(10), neirong varchar(10), primary key(id) ) 我把从数据库到php的代码都给你这你要是还说不好使 我就真没办法了.
一条一条的实现可以,三条一块好像不能, select * from table where class='a' order by rand() limit 1; select * from table where class='b' order by rand() limit 1; select * from table where class='c' order by rand() limit 1;
回cpc1984 你仔细看一下结果,输出的结果的确每次都在变,但变的只是排序,而取到的记录永远都是同一条。$a="select * from biao where class='a' || class='b' || class='c' group by class order by rand()"; $b=mysql_query($a); while ($row = mysql_fetch_array($b)) { echo $row["id"]."<br>"; } 这样改一下比较好对比结果。
测试过了,语句好使.||中间看看有没有空格,如果有空格的话去掉他.
语句没有毛病.
然后按F5刷新查询,他是随机的.
order by rand()实际上没有任何效果
php 5.2.6
推荐SQLYOG软件跟sqlsever的查询分析器一样,
把语句复制进去鼠标划上按F5刷新查询可以看到语句是好使的.
数据是随机显示的.
我MYSQL测试过都好使了,程序里还能不好使.
这一句分组时,它能从每个组里随机取一条记录?
PRIMARY PRIMARY 82780 id
class INDEX 124 class
这样查肯定没错。这个没有group by,没有分组。
是按class字段分组
rand()是随机和索引没关系吧.
语句在网页,数据库中测试都好使.
<?php
mysql_connect("localhost","root","km820110");
mysql_select_db("ceshi");
$a="select * from biao where class='a' || class='b' || class='c' group by class order by rand()";
$b=mysql_query($a);
while ($row = mysql_fetch_array($b))
{
echo $row["id"];
echo $row["class"];
echo $row["neirong"];
}
?>
数据库文件
create database ceshi
create table biao
(
id int auto_increment,
class varchar(10),
neirong varchar(10),
primary key(id)
)
我把从数据库到php的代码都给你这你要是还说不好使
我就真没办法了.
select * from table where class='a' order by rand() limit 1;
select * from table where class='b' order by rand() limit 1;
select * from table where class='c' order by rand() limit 1;
$b=mysql_query($a);
while ($row = mysql_fetch_array($b))
{
echo $row["id"]."<br>"; } 这样改一下比较好对比结果。
需要的朋友,可以直接联系我
QQ 908267931 张先生
MSN:[email protected]
邮箱:[email protected]
如果需要指定的class更多呢