sql - SQL 通过连接插入值
问题描述
也许为时已晚,这就是我被卡住的原因。我想用值填充数据库,但仅适用于数据库中已存在日期的那些值。结构如下:
CREATE TABLE dbo.TEST(ID INT IDENTITY(1,1) NOT NULL,date_time datetime)
ALTER TABLE dbo.TEST ADD "column1" FLOAT;
INSERT INTO dbo.TEST(date_time,"column1")
VALUES ('2018-04-01 02:00:00',1),('2018-04-01 06:00:00',2),('2018-04-01 07:00:00',3)
ALTER TABLE dbo.TEST ADD "column2" FLOAT;
所以表格看起来像这样:
现在我想用值 20 和 21 填充 2:00 和 6:00 点的 column2,但忽略值 25。我所拥有的是
INSERT INTO dbo.TEST("column2")
SELECT
NewValues."column2"
FROM (
VALUES ('2018-04-01 02:00:00',20),
('2018-04-01 06:00:00',21),
('2019-10-05 20:30:00',25)
) AS NewValues(date_time,"column2")
INNER JOIN dbo.TEST
ON dbo.TEST.date_time = NewValues.date_time
WHERE dbo.TEST.date_time = NewValues.date_time
但这会导致
我错过了什么?
解决方案
你想要一个update
:
update t
set column2 = NewValues.column2
from dbo.TEST t left join
(values ('2018-04-01 02:00:00', 20),
('2018-04-01 06:00:00', 21),
('2019-10-05 20:30:00', 25)
) NewValues(date_time, column2)
ON t.date_time = NewValues.date_time;
推荐阅读
- fortran - 将预处理指令引入 Cray 编译器的 Fortran 代码的正确方法
- javascript - Javascript - 数组 - for-loop 到 forEach
- entity-framework - 从 Automapper TypeConverter 内部访问数据库是否合理?
- python - 如何使用 python-docx 在 docx 文件中编写多个表?
- python - 为 2D NumPy 数组的每一行有效地应用不同的排列
- json - 解析 JSON 列值
- javascript - else if 语句没有在客户端浏览器中得到评估 - javascript socket.io
- python - 如何使用 Python 驱动程序加速将 execute_async 插入 Cassandra
- javascript - 节点 js 表示服务器集群进程应该侦听多个套接字还是一个?
- javascript - 推迟wordpress插件css/script好不好