如何在PHP MySQL中显示最新记录?

时间:2013-06-13 01:15:09

标签: php

大家好日子,

我是一名新手PHP程序员,我想请求帮助或任何想法如何能够在我的PHP MySQL程序中显示最新记录。

目标:

仅在主表中显示最新修订版的记录。例如,

#################################
id     filename    revision
1      math12       1
2      math12       2
3      science43    1
4      science43    2
5      science43    3
3      logic13      1
4      logic13      2
5      logic13      3
#################################

当我获取所有记录时,我的目标只是显示最新版本的记录。

#################################
id     filename    revision
2      math12       2
5      science43    3
5      logic13      3
#################################
像这样......

你能解决我的问题吗?

非常感谢..

本守则中似乎有什么问题?

SELECT 
                                imaster_tbl.id,
                                imaster_tbl.die_name,
                                imaster_tbl.part_name,
                                imaster_tbl.drawing_number,
                                imaster_tbl.drawing_part_number,
                                imaster_tbl.sub_letter,
                                imaster_tbl.specs,
                                imaster_tbl.file_path,
                                idrawing_type_tbl.drawing_type,
                                idie_type_tbl.die_type,
                                irevision_tbl.revision,
                                irelay_type_tbl.relay_type  FROM imaster_tbl
                                LEFT JOIN idrawing_type_tbl ON imaster_tbl.drawing_type_id = idrawing_type_tbl.drawing_type_id
                                LEFT JOIN idie_type_tbl ON imaster_tbl.die_type_id = idie_type_tbl.die_type_id
                                LEFT JOIN irelay_type_tbl ON imaster_tbl.relay_type_id = irelay_type_tbl.relay_type_id 
                                LEFT JOIN irevision_tbl ON imaster_tbl.revision_id = irevision_tbl.revision_id 
                                WHERE revision = (SELECT MAX(revision) FROM imaster_tbl WHERE drawing_part_number = drawing_part_number)

-Martin

3 个答案:

答案 0 :(得分:0)

使用子查询编写此查询有许多等效方法,其中之一是:

select * from table t1 where revision = (select max(revision) from table t2 where t2.filename = t1.filename)

如果您愿意采用不同的方式,也可以使用ANYALLEXISTSNOT EXISTS运算符来编写它。

答案 1 :(得分:0)

首先使用key和max修订版构建子查询,然后加入它以获取记录的其余部分:

SELECT 
  tablename.* 
FROM 
  tablename
  INNER JOIN (
    SELECT 
      filename, MAX(revision) AS max_revision 
    FROM 
      tablename 
    GROUP BY 
      filename
  ) AS max_revisions
  ON tablename.filename = max_revisions.tablename
  AND tablename.revision = max_revisions.max_revision

答案 2 :(得分:-1)

只是一个简单而干净的解决方案

SELECT * FROM table WHERE id!='' ORDER BY revision DESC LIMIT 0,3