Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何使用subselect更新表_Mysql_Sql - Fatal编程技术网

Mysql 如何使用subselect更新表

Mysql 如何使用subselect更新表,mysql,sql,Mysql,Sql,我试图将subselect的输出与更新表中的字段连接起来。但使用MySQL无法正确实现 你知道怎么做吗 update INSTRUMENTDAILYINFO info set info.vWap = (SELECT t1.vWap FROM INSTRUMENTDAY t1 JOIN (SELECT Date(tradedate)

我试图将subselect的输出与更新表中的字段连接起来。但使用MySQL无法正确实现

你知道怎么做吗

update INSTRUMENTDAILYINFO info 
set 
    info.vWap = (SELECT 
            t1.vWap
        FROM
            INSTRUMENTDAY t1
                JOIN
            (SELECT 
                Date(tradedate) date_date,
                    stockName,
                    min(tradedate) min_date
            FROM
                INSTRUMENTDAY
            GROUP BY date_date , stockName) t2 ON t1.tradedate = t2.min_date
                AND t1.stockName = t2.stockName
        order by t1.tradedate , t1.stockName asc)
where
    t1.tradeDate = info.tradeDate
        and t1.stockName = info.stockName

SELECT
`INSTRUMENTDAILYINFO`.`ID`,
`INSTRUMENTDAILYINFO`.`CLOSEPRICE`,
`INSTRUMENTDAILYINFO`.`HIGHVALUE`,
`INSTRUMENTDAILYINFO`.`LOWVALUE`,
`INSTRUMENTDAILYINFO`.`STARTPRICE`,
`INSTRUMENTDAILYINFO`.`STOCKNAME`,
`INSTRUMENTDAILYINFO`.`TRADEDATE`
FROM `INSTRUMENTDAILYINFO`;

SELECT
`INSTRUMENTDAY`.`ID`,
`INSTRUMENTDAY`.`STOCKNAME`,
`INSTRUMENTDAY`.`TRADEDATE`,
`INSTRUMENTDAY`.`VWAP`
FROM `SimpleGrowth`.`INSTRUMENTDAY`;

如果在主表和x子查询之间有一个连接列,则类似于此。

someCommonColumn指的是什么tradeDate和stockName?我在运行查询时更新了0行。@user2130951 show tables structure、INSTRUMENTDAILYINFO和INSTRUMENTDAY-应该在那里使用链接2的外键列。非常好!保存此查询。只需添加一个表字段就可以了,因为一个表字段是Timestamp,另一个表字段是date,如果date(x.tradeDate)=info.tradeDate,那么它就可以工作了。您能创建一个fiddle吗?
UPDATE INSTRUMENTDAILYINFO info 
JOIN
(SELECT t1.vWap,t1.tradedate as tradedate,t2.stockName as stockName 
  FROM INSTRUMENTDAY t1
             JOIN
            (SELECT 
                Date(tradedate) date_date,
                    stockName,
                    min(tradedate) min_date
            FROM
                INSTRUMENTDAY
            GROUP BY date_date , stockName) t2 ON t1.tradedate = t2.min_date
                AND t1.stockName = t2.stockName
            ORDER BY t1.tradedate , t1.stockName asc)x
ON
     x.tradeDate = info.tradeDate
AND x.stockName = info.stockName
SET  info.vWap= x.vWap