0

我的 MySQL 表中有一条记录,类似于:

id Postcontent postdate

1 A 2013-01-31

2 B 2013-01-31

3 C 2013-01-30

4 天 2013-01-30

5 E 2013-01-29

6楼 2013-01-29

我想用类似的方式展示它

2013-01-31

一个

2013-01-30

C

D

2013-01-29

F

我可以用 group by 像上面一样显示,但不能在 group by 中添加分页

如果有人可以帮助我如何在分组中添加分页。

4

2 回答 2

0

你可以这样做:

while( $row = $query_prepared->fetch( PDO::FETCH_ASSOC ) )
{
    if( $date <> $row['postdate'] )
    {
        echo '<br>' ,$row['postdate'];
    }

    $date = $row['postdate'];

    echo '<br>' ,$row['Postcontent'];
}

不,不要放入GROUP BY你的 SQL 而是使用ORDER BY postdate DESCor ASC 。

这是一个仅用于理解的示例:

$testData = array
(
    array('1','A','2013-01-31'),
    array('2','B','2013-01-31'),
    array('3','C','2013-01-30'),
    array('4','D','2013-01-30'),
    array('5','E','2013-01-29'),
    array('6','F','2013-01-29')
);

$date = '';
foreach( $testData as $data )
{
    $row = array();
    list( $row['d'] ,$row['Postcontent'] ,$row['postdate'] ) = $data;

    if( $date <> $row['postdate'] )
    {
        echo '<br>' ,$row['postdate'];
    }

    $date = $row['postdate'];

    echo '<br>' ,$row['Postcontent'];
}

这将输出:

2013-01-31
A
B
2013-01-30
C
D
2013-01-29
E
F
于 2013-10-19T12:23:21.950 回答
0

那这个呢?

确保在(postdata,Postcontent)上建立索引后日期甚至索引以获得覆盖索引

请注意,有些人会认为这是错误的,因为您现在使用 SQL 格式化 (HTML),但使用这种方法可以获得更清晰的客户端代码

运行这个查询..

SELECT
   postdate 
 , GROUP_CONCAT(Postcontent SEPARATOR '<br />') 'postcontent_formatted'

FROM 
 your_table

GROUP BY
  postdate DESC

PHP 代码

<?php

     while( $row = $query_prepared->fetch( PDO::FETCH_ASSOC ) ) {
        echo $row['postdate'] . '<br />';
        echo $row['postcontent_html_formatted'] . '<br />';
     }

?>
于 2013-10-19T13:27:57.493 回答