MySQL从多个相同的表中选择并使用php随机显示结果

时间:2012-12-14 14:03:01

标签: php mysql

您好我想在我的数据库中查询多个相同的表,它们有不同的前缀而不是随机显示结果但不知何故我需要跟踪项目的来源而我无法弄清楚如何

我这样做的查询是因为我无法访问information_schema

$query = "SHOW TABLES FROM mydb WHERE RIGHT( tables_in_mydb, 5 ) = 'table'";
$res = mysql_query($query);
$num = mysql_num_rows($res);

while($row = mysql_fetch_row($res)) {

$numbers = explode('_', $row[0]);

  if($num > 0) {
    $q = "SELECT `this`, `that`, `something` FROM ".$numbers[0]."_idetinticaltables"; // :)
    $r = mysql_query($q);
    while($c = mysql_fetch_array($r)) {
       /*display the results randomly with an identifier where the come from*/
    }
  }
}

3 个答案:

答案 0 :(得分:0)

您可以使用ORDER BY RAND()对其进行随机排序

答案 1 :(得分:0)

$aa=array()   
while($c = mysql_fetch_array($r)) 
{
   /*display the results randomly with an identifier where the come from*/
   $aa[]=$c;
}
echo $aa; // print "Array"

答案 2 :(得分:0)

以下可能有效:

  1. 获取您感兴趣的表格列表。您已经这样做了。
  2. 创建UNION of multiple SELECT statements。每个SELECT语句对于选择的表都不同,并且您将列集添加到表的名称中(以便稍后可以识别它):

    (SELECT *, TABLENAME = 'first_name_of_table' FROM first_name_of_table ...)
    UNION
    (SELECT *, TABLENAME = 'second_name_of_table' FROM second_name_of_table ...)
    UNION
    ...
    ORDER BY RAND() LIMIT 10;
    
  3. 因为它是UNION,您可以将整个订单随机化。请参阅How can i optimize MySQL's ORDER BY RAND() function?,因为要做得好不是那么简单,上面的例子只有 才能在其中放置ORDER BYLIMIT子句。如果您的表中有许多条目,它将会终止您的服务器。