大家好日子,
我是一名新手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
答案 0 :(得分:0)
使用子查询编写此查询有许多等效方法,其中之一是:
select * from table t1 where revision = (select max(revision) from table t2 where t2.filename = t1.filename)
如果您愿意采用不同的方式,也可以使用ANY
,ALL
,EXISTS
或NOT 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