我有两个表,其中一个每天更新。我想展示"只有"每一行的最新记录。
这是我现在使用的查询,当然会返回所有记录。
SELECT *
FROM ss_pumps, secondary_systems WHERE ss_pumps.id=secondary_systems.segment_id
ORDER BY id ASC
非常感谢任何帮助!
答案 0 :(得分:3)
您可以使用子查询找到segment_id
的{{1}}的最新记录。然后,子查询的结果将与两个表联接:ID
和ss_pumps
。
secondary_systems
实际上,我不确定你的表:SELECT a.*, c.*
FROM ss_pumps a
INNER JOIN
(
SELECT segment_id, MAX(datefield) max_val
FROM secondary_systems
GROUP BY segment_id
)b ON a.id = b.segment_id
INNER JOIN secondary_systems c
ON b.segment_id = c.segment_id AND
b.max_val = c.datefield
和ss_pumps
是如何相互关联的。
我认为你想要其他方式,
secondary_systems
答案 1 :(得分:1)
使用此查询:
SELECT * FROM ss_pumps, secondary_systems WHERE ss_pumps.id=secondary_systems.segment_id ORDER BY id DESC LIMIT 1
这假设id是一个自动增量列,并且将始终按顺序插入。
答案 2 :(得分:-2)
这是我得到的:
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
CAVEAT:我假设
secondary_systems
有自己的id
字段也会自动增量。这是确保您“仅”获得每行的最新记录的唯一方法。
演示: http://sqlfiddle.com/#!2/f816b/2/0
在我的演示中ss_pumps
举行了父母,而secondary_systems
抓住了孩子们。每位家长有3个孩子。除了最后一个孩子都是男孩。最后一个孩子永远是个女孩。根据您的问题,生成的查询应该只产生女孩。
| ID | PARENT | SEGMENT_ID | CHILD |
------------------------------------
| 1 | mother | 1 | betty |
| 2 | father | 2 | tina |