从没有相同ID的数据库中检索记录

时间:2011-06-16 04:38:38

标签: php mysql

。我想做的是从我的数据库中检索记录并显示所有内容,但条件不是显示具有相同task_id的所有记录,而是仅显示其中的最新记录。如何在具有相同task_id的记录中选择最新的?

5 个答案:

答案 0 :(得分:1)

如果您的数据库中有日期字段(实际上是时间戳),您可以使用group byorder by来完成这项工作:

SELECT * FROM TBL GROUP BY task_id ORDER BY date DESC

答案 1 :(得分:0)

您需要一个像

这样的列
last_modified TIMESTAMP

因此,每次插入或更新行时,last_modified列都会使用当前时间戳进行更新。然后,您只需要一个像

这样的查询
SELECT *
  FROM tblTask
 WHERE task_id = n
 ORDER BY last_modified DESC
 LIMIT 5

将使用给定的task_id从数据库中获取最新的5个更新任务。无论WHERE如何,都删除task_id子句以获取最新任务。

注意TIMESTAMP数据类型是特殊的,因为默认情况下,MySQL会自动将字段更新为当前时间戳,除非在插入或更新查询。如果不需要此行为,请使用DATETIME,但是需要您指定新列的列值(除非在表中设置了默认值)

答案 2 :(得分:0)

对于MYSQL TIMESTAMP,最好指定默认和更新操作

last_modified TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

答案 3 :(得分:0)

@rahim asgari

如果您只想列出具有多条记录的任务,那么

SELECT * FROM TBL GROUP BY task_id HAVING count(task_id)> 1 ORDER BY date DESC

答案 4 :(得分:0)

这是你的解决方案:

SELECT *
FROM 
(
    SELECT *
    FROM `your_table`
    ORDER BY `task_time` DESC
) `TT`
GROUP BY `TT`.`task_id`;

请注意更改上述查询,your_table包含您的表名,task_idtask_time包含您各自的ID和时间列。

另外,请注意,如果表中包含许多条目,例如一百万行,则上述查询可能会运行缓慢。

如果以上是您愿意提出的问题,请告诉我。