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

标签 mysql 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

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

结果必须如下

#结果

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

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

#Queries 创建此示例

#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');

最佳答案

使用 UPDATEJOIN 的另一个解决方案:

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;

关于mysql - 使用 SQL 中的其他表更新/插入表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47549229/

相关文章:

mysql - 新插入时多表数据更新的触发器或事务

MySQL:在 View 中将小数转换为百分比

mysql - 查找恰好包含两个给定 child 的单亲 ID

mysql - SQL 没有按正确的顺序更新元素

Mysql请求返回未定义

python - 在 python 中使用 """.. ."""而不是 "..."或 '...' 有什么用,尤其是在 MySQLdb cursor.execute 中

sql - 摆脱昂贵的自连接

mysql - 获取类型为 `text` 的字段

php - 可破解的sql查询

php - 如何使用选择和输入根据发布数据过滤结果?