我正在使用PostgreSQL。我的表创建如下。对于给定的device_id
,我希望从温度表中选择record_time
的最大UPDATE
和last_record_time
devices
列中的记录表device_id
。
CREATE TABLE IF NOT EXISTS devices(
device_id serial PRIMARY KEY,
device_name varchar(255) UNIQUE NOT NULL,
last_record_time timestamp without time zone NOT NULL DEFAULT '1995-10-30 10:30:00'
);
CREATE TABLE IF NOT EXISTS temperature(
device_id integer NOT NULL,
temperature decimal NOT NULL,
record_time timestamp without time zone,
CONSTRAINT temperature_device_id_fkey FOREIGN KEY (device_id)
REFERENCES devices (device_id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
);
我从record_time
表中获取最大temperature
,如下所示:
SELECT MAX(record_time) FROM temperature WHERE device_id=4;
这很有效。如何将第二个查询的输出传递到UPDATE
语句中,以便更新last_record_time
表中与所提供的devices
对应的记录中的device_id
。我读过有关INNER JOIN
的内容,但这似乎有几个记录。 device_id
表中的devices
是唯一的。所以,我每次只需要UPDATE
一条记录。
答案 0 :(得分:0)
你可以这样试试;
update devices set last_record_time = (select max(record_time) from
temperature where device_id = devices.device_id)
where device_id = 4