从三个SQL表中返回随机结果

时间:2013-07-21 15:31:16

标签: php mysql sql

我有一个SQL数据库,里面有三个表叫做...

Fruit Name
Fruit Color
Fruit Price

我试图从这三个表中的每个表中返回一个随机结果给我举例......

Apple - Green - $10

目前我这样做是通过运行以下PHP三次(每个用不同的表)

$result = mysqli_query($con,"SELECT * FROM fruitname");
while($row = mysqli_fetch_array($result))
  {
  echo $row['fruitname'];
  }

这种方法很好,但我觉得我的方式错了。有没有办法将此作为一个命令而不是三个?

1 个答案:

答案 0 :(得分:2)

如果你真的想要随机行,你可以这样做:

select *
from (select * from FruitName order by rand() limit 1) fn cross join
     (select * from FruitColor order by rand() limit 1) fc cross join
     (select * from FruitPrice order by rand() limit 1) fp 

返回一行中的所有字段。

请注意,随机行与任意行非常不同。随机行实际上意味着每行具有相同的被选择机会。任意行只是不确定的。 select没有order by的第一行是任意的,但绝对不是随机的。