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


Return random result from three SQL tables

我有一个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'];
  }

这很好,但我觉得我做得不对。有没有一种方法可以用一个命令而不是三个命令来实现这一点?

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

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 

这将返回一行中的所有字段。

请注意,随机行与任意行将大不相同。随机行实际上意味着每一行被选中的机会相等。任意一行就是不确定的。没有order byselect中的第一行是任意的,但绝对不是随机的。