你查询没有意义。首先,您要从数据中选择DISTINCT日期(忽略时间)。那么对于每个日期,你选择该日期的所有数据?
你为什么不刚刚火一个查询
SELECT *, DATE(added) as DateNoTime
FROM tb_videos
ORDER BY added desc
如果你只想要5个日期和表很大,有两种可能性。
1,有没有在日期的差距,您可以使用
SELECT *, DATE(added) as DateNoTime
FROM tb_videos
WHERE added >= ADDDATE(CURDATE(), interval -4 days)
ORDER BY added desc
2,如果有可能的差距,例如没有为昨天所以它必须显示最近5天有记录
SELECT *, DATE(added) as DateNoTime
FROM (
select min(DateNoTime) as MinDate
from
(
select DATE(added) as DateNoTime
FROM tb_videos
order by DateNoTime desc
limit 5
) x) y, tb_videos
WHERE added >= y.MinDate
ORDER BY added desc
这给你所有的数据。在PHP中,记录DateNoTime。无论何时发生变化,您都处于不同的日期,这会导致您触发另一个查询。否则,代码应该只是最低限度地改变。
未经检查的PHP代码
$result = mysql_query('
SELECT *, DATE(added) as DateNoTime
FROM (
select min(DateNoTime) as MinDate
from
(
select DATE(added) as DateNoTime
FROM tb_videos
order by DateNoTime desc
limit 5
) x) y, tb_videos
WHERE added >= y.MinDate
ORDER BY added desc
');
$prevdate = NULL;
foreach($result as $rst)
{
if($prevdate!=$rst=>DateNoTime) {
// do something, like printing out a header for each new date
$prevdate=$rst=>DateNoTime;
}
// do something with the record
}
那是什么让你$结果第一个查询?告诉我们,我们应该能够制定一个连接查询以减少您正在执行的数据库查询的数量 – 2011-03-21 10:28:23
第一个查询返回分组日期 – Sammem 2011-03-21 10:30:58
告诉我们它的作用将无济于事......我们需要知道查询自己。我们需要知道你想要达到什么......我认为这与你以前的问题有关 – 2011-03-21 10:32:18