0

您好,我想在我的数据库中查询多个相同的表,这些表具有不同的前缀,然后随机显示结果,但不知何故我需要跟踪项目的来源,但我不知道如何

我这样做是因为我无权访问 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*/
    }
  }
}
4

3 回答 3

0

以下可能有效:

  1. 获取您感兴趣的表格列表。您已经这样做了。
  2. 创建UNION多个SELECT语句。对于从中选择的表,每个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你可以随机化整个订单。请参阅如何优化 MySQL 的 ORDER BY RAND() 函数?因为做好事不是那么简单,所以上面的例子只是在其中放置了一个ORDER BYandLIMIT子句。如果您的表中有许多条目,它将杀死您的服务器。

于 2012-12-14T16:31:14.877 回答
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"
于 2012-12-14T14:50:36.030 回答
0

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

于 2012-12-14T14:18:30.697 回答