【发布时间】:2018-01-30 15:53:34
【问题描述】:
我正在使用 PostgreSQL。我的表创建如下。对于给定的device_id,我想从温度表中选择最大record_time 和UPDATE devices 表中last_record_time 列的记录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
);
我从temperature 表中得到最大值record_time,如下所示:
SELECT MAX(record_time) FROM temperature WHERE device_id=4;
这行得通。如何将第二个查询的输出通过管道传输到UPDATE 语句中,以便更新devices 表中与提供的device_id 对应的记录中的last_record_time。我读过关于INNER JOIN 的文章,但这似乎汇集了几条记录。 device_id 在 devices 表中是唯一的。所以,我每次都需要这个UPDATE 正好一条记录。
【问题讨论】:
-
您是否尝试过任何更新查询?
-
@krishnPatel 这是我的问题。我想
UPDATE,我知道如何获得我想要的价值。但是,我不知道如何自己写出来。我想知道,UPDATE语句实际上是如何编写的。
标签: sql postgresql