。我想做的是从我的数据库中检索记录并显示所有内容,但条件不是显示具有相同task_id的所有记录,而是仅显示其中的最新记录。如何在具有相同task_id的记录中选择最新的?
答案 0 :(得分:1)
如果您的数据库中有日期字段(实际上是时间戳),您可以使用group by
和order 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_id
,task_time
包含您各自的ID和时间列。
另外,请注意,如果表中包含许多条目,例如一百万行,则上述查询可能会运行缓慢。
如果以上是您愿意提出的问题,请告诉我。