[英]MySQL update rows from a table with rows from another one
我正在嘗試將一大塊行從一個表移動到另一個,只有選定的字段。
這些表具有不同的字段名稱。
目標表是mkt_data.bknk1810
,源表是tiresia.equity_810_openings
。 需要復制的數據在A, B, C, D
列中,需要分別復制到max, min, close, open
列。
以下代碼導致僅將源表中的第一行復制到目標表的所有選定行中,這不是預期的結果。
UPDATE mkt_data.bknk1810, tiresia.equity_810_openings SET
mkt_data.bknk1810.max = tiresia.equity_810_openings.A,
mkt_data.bknk1810.min = tiresia.equity_810_openings.B,
mkt_data.bknk1810.close = tiresia.equity_810_openings.C,
mkt_data.bknk1810.open = tiresia.equity_810_openings.D
where (mkt_data.bknk1810.Date >= '2021-07-19' and mkt_data.bknk1810.Date <= '2021-09-09') and (tiresia.equity_810_openings.p_key >= 20210719 and tiresia.equity_810_openings.p_key <= 20210909);
我的錯誤在哪里? 為什么它只復制第一行?
編輯
要求提供樣本數據。
目標表中的行是
Date max min close open
2021-07-19 00:00:00 null null null null
2021-07-20 00:00:00 null null null null
2021-07-21 00:00:00 null null null null
2021-07-22 00:00:00 null null null null
2021-07-23 00:00:00 null null null null
2021-07-26 00:00:00 null null null null
2021-07-27 00:00:00 null null null null
2021-07-28 00:00:00 null null null null
而源表中的那些是
p_key A B C D
20210719 28100 27460 27620 27960
20210720 27630 27060 27410 27570
20210721 27870 27310 27530 27490
20210722 27970 27580 27910 27630
20210723 27970 27580 27910 27630
20210726 28150 27760 27790 28100
20210727 28150 27760 27790 28100
20210728 27840 27350 27530 27660
源表中的數據需要移動到目標表中。
因此,預期結果是:
Date max min close open
2021-07-19 00:00:00 28100 27460 27620 27960
2021-07-20 00:00:00 27630 27060 27410 27570
2021-07-21 00:00:00 27870 27310 27530 27490
2021-07-22 00:00:00 27970 27580 27910 27630
2021-07-23 00:00:00 27970 27580 27910 27630
2021-07-26 00:00:00 28150 27760 27790 28100
2021-07-27 00:00:00 28150 27760 27790 28100
2021-07-28 00:00:00 27840 27350 27530 27660
原來你只需要添加一個簡單的
and (mkt_data.bknk1810.Date= CONVERT(tiresia.equity_810_openings.p_key, CHAR));
在我發布的查詢結束時。
將此留作參考。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.