按日期排序,仅与每个产品的最新行排序

时间:2011-09-13 14:19:46

标签: php mysql

要创建表,我使用以下查询检索数据:

SELECT cId,cProductId,cDate,cInfo FROM tProduct ORDER BY cProductId ASC,cDate ASC;

当然,我对查询进行了大量简化,但是你得到的是,同一产品可能有很多记录,而且是我最新的唯一一个记录,因此我如何订购我的查询:我只存储信息我在while循环中遇到的最后一行。

while (($row = $result->fetch()) !== FALSE)
{
      if(!empty($row[0])){
          if(($table_row[1]!=$row[1])&&(!empty($table_row[0]))){
              //Display the last row saved
          }
          $table_row= array($row[0],$row[1],$row[2],$row[3]);
      }
}

现在我想为生成的html表实现一些排序选项。我将排序信息存储在会话变量中。在排序选项中,我希望能够按日期排序。在按日期订购查询时,如何确保仅检索每个产品的最新行?

1 个答案:

答案 0 :(得分:3)

您的查询中未包含FROM子句。但是,假设您需要每个产品ID的最新行,您可以执行以下操作:

SELECT cId,cProductId,cDate,cInfo
FROM tProduct t1
WHERE cDate = (SELECT max(cDate) FROM tProduct t2 where t1.cProductID = t2.cProductId)
ORDER BY cProductId ASC,cDate ASC;