Php 按相反的时间顺序从多个表中打印出唯一的值

Php 按相反的时间顺序从多个表中打印出唯一的值,php,mysql,Php,Mysql,我有一个MySQL数据库,有多个表,每个表都有相同的结构。结构如下: id INT(11) NOT NULL auto_increment, site VARCHAR(350) NOT NULL, votes_up BIGINT(9) NOT NULL, votes_down BIGINT(9) NOT NULL, PRIMARY KEY(id), UNIQUE (site) 下面的PHP代码从所有表中打印出每个唯一的“站点”,并将所有表中的“投票数”相加。然后,它按降序列出“站点”(基于“投

我有一个MySQL数据库,有多个表,每个表都有相同的结构。结构如下:

id INT(11) NOT NULL auto_increment, site VARCHAR(350) NOT NULL, votes_up BIGINT(9) NOT NULL, votes_down BIGINT(9) NOT NULL, PRIMARY KEY(id), UNIQUE (site)
下面的PHP代码从所有表中打印出每个唯一的“站点”,并将所有表中的“投票数”相加。然后,它按降序列出“站点”(基于“投票总数”)的前25个值

这段代码工作得很好,但我想在创建时间的基础上按相反的时间顺序做同样的事情。我该怎么做

提前感谢,

约翰



如评论中所述,您必须添加一列来存储创建行的时间。如果要存储UNIX时间戳,此列的类型可以是
INT
,如果要使用日期字符串,则此列的类型可以是
DATETIME
。另外,如果不想这样做,可以使用
按id DESC排序
,因为自动递增列通常对应于时间顺序,但这不是一个稳定的解决方案,因为当
自动递增
值超出
INT
数据类型的范围时,它会开始使用未使用的值(例如,从已删除的行中)。

嗯……如果您没有任何类型的日期(我可以看到……我是瞎了吗?)您是对的……我是否需要为“站点”添加日期戳?在另一个查询中,我使用INFORMATION_SCHEMA.TABLES和CREATE_TIME来显示按相反的时间顺序创建的表……这里有没有方法使用它?没有,表行不记录在INFORMATION_SCHEMA中。
<?

mysql_connect("mysqlv10", "username", "password") or die(mysql_error());
mysql_select_db("bookfeather") or die(mysql_error());

$result = mysql_query("SHOW TABLES");
$tables = array();
while ($row = mysql_fetch_assoc($result)) {
    $tables[] = '`'.$row["Tables_in_bookfeather"].'`';

}

//$subQuery = "SELECT site, votes_up FROM ".implode(" UNION ALL SELECT site, votes_up FROM ",$tables);

$subQueryParts = array();
foreach($tables as $table)
    $subQueryParts[] = "SELECT site, votes_up FROM $table WHERE LENGTH(site)";
$subQuery = implode(" UNION ALL ", $subQueryParts);

// Create one query that gets the data you need
$sqlStr = "SELECT site, sum(votes_up) sumVotesUp
            FROM (
            ".$subQuery." ) subQuery
           GROUP BY site ORDER BY sum(votes_up) DESC LIMIT 25";
$result = mysql_query($sqlStr);

$arr = array(); 
echo "<table class=\"samples2\">";
while ($row = mysql_fetch_assoc($result)) { 
    echo '<tr>';
    echo '<td class="sitename2"><a href="booklookup3.php?entry='.urlencode($row["site"]).'&searching=yes&search=search">'.$row["site"].'</a></td>';
    echo '<td>'.$row["sumVotesUp"].'</td>';
    echo '</tr>';
} 

echo "</table>";


?>