使用 SQL 中的其他表更新/插入表

亨利·纳瓦罗

我对SQL有点麻烦,我使用MySQL。

我有两个表:

#Table1:刮擦

id        address   last_price    m2   date_last_price
======================================================
id_1234        NY       100000   100       2017-11-27
id_5678    Madrid        90000   120       2017-11-27

#Table2:历史价格

id        price        date
===============================
id_1234  100000   2017-11-27
id_5678   90000   2017-11-27
id_1234  120000   2017-11-28
id_5678   90000   2017-11-28
id_1234  115000   2017-11-29
id_5678   95000   2017-11-29

我希望在表 1 中插入/更新表 2 中最后一个日期的价格。

结果必须如下

#结果

id        address   last_price    m2   date_last_price
======================================================
id_1234        NY       115000   100       2017-11-29
id_5678    Madrid        95000   120       2017-11-29

你能帮我解决这个问题吗?

#创建这个例子的查询

#Table 1

CREATE TABLE IF NOT EXISTS scrape(
    id varchar(50),
    address varchar(50),
    last_price int,
    m2 int,
    date_last_price date
);

INSERT INTO scrape (id,address,last_price,m2,date_last_price)
VALUES('id_1234','NY',100000,100,'2017-11-27'),
('id_5678','Madrid',90000,120,'2017-11-27');

#Table 2

CREATE TABLE IF NOT EXISTS historic_price(
     id varchar(50),
     price int,
    `date` date
);

INSERT INTO historic_price(id,price,date)
VALUES('id_1234',100000,'2017-11-27'),
('id_5678',90000,'2017-11-27'),
('id_1234',120000,'2017-11-28'),
('id_5678',90000,'2017-11-28'),
('id_1234',115000,'2017-11-29'),
('id_5678',95000,'2017-11-29');
瓦莱丽

使用UPDATEwith 的另一种解决方案JOIN

UPDATE scrape S
INNER JOIN (
    SELECT id, `date`, price
    FROM historic_price HP
    WHERE `date` = (SELECT MAX(date) FROM historic_price WHERE id = HP.id GROUP BY id)
) A
    ON S.id = A.id
SET
    S.date_last_price = A.date
    ,S.last_price = A.price;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用其他表中的值的总和更新sql表中的记录

使用select语句插入表并在SQL Server 2008中添加其他列

使用Match函数后从其他SQL表中删除?

使用SQL更新临时表以在XML数据中插入节点

Oracle SQL:使用来自同一表的其他列的数据更新表

使用连接从其他表的值逐行更新 SQL Server 表

SQL-使用同一表中其他多个行的值一次更新多个行

如何使用SQL根据其他两个表的信息查找不在表中的记录?

PHP SQL | 在表中查找行,如果不存在,则使用其他表

使用其他2个表中的值更新表

使用其他表中的多个值随机更新表

如何使用其他表中的条件更新表

使用其他2个表中的计算更新表

从其他表更新表 SQL

其他表中的T-SQL插入列

使用WHERE到其他表的UPDATE SQL表

子查询返回1行以上。使用SQL select更新其他表结果

Oracle / SQL-使用子查询/其他表的结果更新列[多个返回]

查询插入到使用其他表中的值

SQL Server从其他表插入数据

使用其他表的值更新表

在sql中插入一个新行后,如何自动更新表中的所有其他行?

批处理SQL查询以更新其他表中的字段

如何从Oracle的SQL中的其他表更新

如何使用其他表中的数据在 SQL 中创建小计

如何使用来自多个其他表的数据插入或更新表?

使用jQuery插入其他表行

SQL Loader-使用TERMINATED将数据加载到其他表中

Redshift 集成测试(或其他 SQL DB)。使用 Java 中的 CSV 文件验证表内容