所以我有一个主查询从今天选择记录。如果今天的记录小于3,则执行另一个查询。这就是我目前的做法:
<?php
//Select today's records
$select = mysql_query("SELECT * FROM item_info
WHERE item_info.content_time
BETWEEN UNIX_TIMESTAMP( CURDATE( ) )
AND UNIX_TIMESTAMP( CURDATE( ) + INTERVAL 1
DAY )
ORDER BY item_info.item_id DESC
LIMIT 9 ");
//If today's records are less than 3, select the ones from yesterday
if(mysql_num_rows($select) < 3){
$select = mysql_query("SELECT * FROM item_info
WHERE item_info.content_time
BETWEEN UNIX_TIMESTAMP( CURDATE( ) + INTERVAL -1
DAY )
AND UNIX_TIMESTAMP( CURDATE( ) )
ORDER BY item_info.item_id DESC
LIMIT 9 ");
}
//Fetch $select
?>
我主要担心的是:
- 这是正确使用mysql_num_rows吗?
- 还有其他办法吗?
通常每天会有超过3条记录,所以子查询就是以防万一。
答案 0 :(得分:0)
是的,有另一种方法可以做到这一点。运行查询以始终选择昨天和今天的前9条记录。修改order by子句,使其如下所示:
order by item_info.content_time desc, item_info.item_id desc
这样您就不需要检查返回的记录数。
然而,这是一个略有不同的逻辑。如果今天的记录数在3到9之间,它会给出与现有答案不同的答案。如果不是这样,请保留你所拥有的。
顺便说一句,您应该验证您当前的代码是否符合您的要求。目前,如果您从今天获得1或2条记录,则忽略它们并使用昨天的数据。这可能不是你的想法。