我遇到了使用子查询的更新查询,并且在阅读手册并尝试不同的想法之后无法弄清楚。下面是表&查询。表Temp_2,Temp_3& Temp_4都有33行,没有空值。
有关如何解决此问题的任何想法?
CREATE TABLE temp_2 (
date_value date default NULL,
close_adj_value_1 double default NULL);
CREATE TABLE temp_3 (
date_value date default NULL,
first_close_adj_value_1 double default NULL);
CREATE TABLE temp_4 (
date_value date default NULL,
pct_return_1 double default NULL);
INSERT INTO temp_4 (date_value) SELECT date_value FROM temp_2;
UPDATE temp_4
SET pct_return_1 =
(SELECT ((temp_2.close_adj_value_1 / temp_3.first_close_adj_value_1) - 1)
FROM temp_2,temp_3
WHERE temp_2.date_value = temp_3.date_value);
谢谢, 埃里克
答案 0 :(得分:0)
由于您使用的是MySQL,因此您可以使用其多表UPDATE
语法:
UPDATE temp_4
JOIN temp_2 USING (date_value)
JOIN temp_3 USING (date_value)
SET temp_4.pct_return_1 = (temp_2.close_adj_value_1 /
temp_3.first_close_adj_value_1) - 1;
我假设您要使用date_value
列将temp_4
中的行与其他表中的行相关联。
您可以使用的替代解决方案是一次性将所有值插入空temp_4
表中:
INSERT INTO temp_4 (date_value, pct_return_1)
SELECT temp_2.date_value,
(temp_2.close_adj_value_1 / temp_3.first_close_adj_value_1) - 1
FROM temp_2 JOIN temp_3 USING (date_value);
答案 1 :(得分:0)
以下比尔的答案解决了我的问题:
INSERT INTO temp_4 (date_value, pct_return_1)
SELECT temp_2.date_value,
(temp_2.close_adj_value_1 / temp_3.first_close_adj_value_1) - 1
FROM temp_2 JOIN temp_3 USING (date_value);