我有一个包含这些架构的表的数据库:
CREATE TABLE register (
register_id INTEGER NOT NULL,
mould_id VARCHAR,
timestamp INTEGER NOT NULL,
PRIMARY KEY (register_id),
FOREIGN KEY(mould_id) REFERENCES mould (mould_id)
)
时间戳是增量整数,因此更大的时间戳意味着更近的时间。
我想为每个mould_id获取最后一次注册(更新/更大的时间戳)。是否可以使用SQL查询来获取它?
答案 0 :(得分:3)
您可以按照mould_id进行分组:
select *, max(timestamp) from register group by mould_id
答案 1 :(得分:1)
SELECT * FROM register WHERE mould_id = :mould_id ORDER_BY timestamp ASC LIMIT 1
答案 2 :(得分:1)
http://sqlfiddle.com/#!7/3ff366/6
首先,您可以通过mould_id对数据进行分组,然后选择最后一个时间戳(最大值)
然后从寄存器表中选择mould_id和timestamp对应的数据
SELECT *
FROM register r
JOIN ( SELECT mould_id
, MAX(timestamp) timestamp
FROM register
GROUP BY mould_id ) d ON r.mould_id = d.mould_id
AND r.timestamp = d.timestamp
答案 3 :(得分:0)
我不确定SQL Lite是否支持该语法,但在postgreSQL中你会这样做:
SELECT DISTINCT ON (r.mould_id) * FROM register r ORDER BY r.mould_id, timestamp ASC