-1

所以我有一个从今天开始选择记录的主要查询。如果今天的记录少于 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条以上的记录,所以子查询以防万一。

4

1 回答 1

0

是的,还有另一种方法可以做到这一点。运行查询以始终选择昨天和今天的前 9 条记录。修改您的 order by 子句,使其如下所示:

order by item_info.content_time desc, item_info.item_id desc

这样您就不需要检查返回的记录数。

但是,这是稍微不同的逻辑。如果今天的记录数在 3 到 9 之间,它将给出与您当前所拥有的答案不同的答案。如果这不好,请保留您所拥有的。

顺便说一句,您应该验证您当前的代码是否满足您的要求。目前,如果您从今天获得 1 或 2 条记录,您将忽略它们并使用昨天的数据。那可能不是你的想法。

于 2013-08-07T00:08:22.663 回答