使用PHP仅显示MySQL数据库中每一行的最新记录
我有两张表,其中一张每天更新。我只想显示每行的最新记录 这是我现在使用的查询,当然会返回所有记录使用PHP仅显示MySQL数据库中每一行的最新记录,php,mysql,sql,greatest-n-per-group,Php,Mysql,Sql,Greatest N Per Group,我有两张表,其中一张每天更新。我只想显示每行的最新记录 这是我现在使用的查询,当然会返回所有记录 SELECT * FROM ss_pumps, secondary_systems WHERE ss_pumps.id=secondary_systems.segment_id ORDER BY id ASC 任何帮助都将不胜感激 使用此查询: 从ss_泵、二次_系统中选择*,其中ss_泵。id=二次_系统。分段_id按id顺序描述限制1 这是假设id是一个自动递增列,并且总是按顺序插入。您可
SELECT *
FROM ss_pumps, secondary_systems WHERE ss_pumps.id=secondary_systems.segment_id
ORDER BY id ASC
任何帮助都将不胜感激 使用此查询:
从ss_泵、二次_系统中选择*,其中ss_泵。id=二次_系统。分段_id按id顺序描述限制1
这是假设id是一个自动递增列,并且总是按顺序插入。您可以使用子查询按id查找每个段id的最新记录。然后对子查询的结果与两个表进行联接:ss_pumps和secondary_systems 实际上,我不确定你们的表格:ss_泵和二次_系统是如何相互关联的 我想你想用其他方式
SELECT a.*, b.*
FROM secondary_systems a
INNER JOIN ss_pumps b
ON a.segment_ID = b.segment
INNER JOIN
(
SELECT segment, MAX(ID) max_val
FROM ss_pumps
GROUP BY segment
) c ON b.segment = c.segment AND
b.ID = c.max_val
以下是我得到的:
SELECT *
FROM
ss_pumps ssp
LEFT JOIN ( SELECT * FROM secondary_systems ORDER BY id DESC ) ss ON ( ssp.id = ss.segment_id )
GROUP BY
ssp.id
ORDER BY
ssp.id ASC
警告:我假设secondary_系统有自己的id字段,它也会自动递增。这是确保每行只获得最新记录的唯一方法
演示:
在我的演示中,ss_泵支撑着父母,而中学系统支撑着孩子。每个家长有3个孩子。除了最后几个孩子外,所有的孩子都是男孩。最后一个孩子总是女孩。根据您的问题,结果查询应该只生成女孩
| ID | PARENT | SEGMENT_ID | CHILD |
------------------------------------
| 1 | mother | 1 | betty |
| 2 | father | 2 | tina |
是的,它是自动id。您发布的查询只返回一条记录,不是每行的最新id。辅助\u系统表没有自动递增id。表之间的关系如何?ss\u泵上的id是辅助\u系统上的段\u id。您是否可以在原始查询中按段\u id按id ASC进行分组并获得相同的结果?否,其他列呢?如果不知道他的数据是什么,我们无法确定这些列是否有不同的数据。但是,子id上的group by和主id上的sort在联接后也应该从子表中返回最新的。@子id上的Dave group by和主id上的sort应该从子表中返回最新的-你真的确定吗?子表包含12列,OP希望从最新的列中获取所有值,您认为它会起作用吗?ss|U泵字段是id |段|泵| jci辅助|系统字段是段| id | temp | dp | sup | ret | bpass | dis oil | mag | vfd | filtI在辅助|系统中没有自动id。我加上了它,除了我的,没人会惊讶它居然起作用了!注意表二次系统上返回的记录。
| ID | PARENT | SEGMENT_ID | CHILD |
------------------------------------
| 1 | mother | 1 | betty |
| 2 | father | 2 | tina |