SQL:基于唯一ID更新数百行

SQL:基于唯一ID更新数百行,sql,Sql,我想这是一个比较直截了当的问题,但我在S/O上找不到一个很长的解决方案 基本上,我有一个excel表,其中只有来自DB表的两列,一列是实体的唯一ID,另一列是我实际上必须为所述唯一ID更新的行。例如: Table has rows ID, Name, Place, DOB, Hair Colour I have an excel with two columns ID, DOB 目标是根据excel中与表中内容匹配的ID,使用新的唯一值更新数百个DOB。可能是某种join语句 每个更新都是一个

我想这是一个比较直截了当的问题,但我在S/O上找不到一个很长的解决方案

基本上,我有一个excel表,其中只有来自DB表的两列,一列是实体的唯一ID,另一列是我实际上必须为所述唯一ID更新的行。例如:

Table has rows
ID, Name, Place, DOB, Hair Colour
I have an excel with two columns
ID, DOB
目标是根据excel中与表中内容匹配的ID,使用新的唯一值更新数百个DOB。可能是某种join语句

每个更新都是一个不同的日期,所以做一个总括更新语句是一个la

Update c
set c.date = 1/01/2001
from tableName c
Where c.Unique_Ids in (
List of comma separated IDs)
……真的不管用。 问题中的日期与他们的ID不同,除了写数百条单独的更新语句之外。简单的答案我找不到。
非常感谢您的帮助。

您可以将两个数据源连接在一起,假设我从您的描述中收集到一对一的关系,并根据该连接条件将现有日期设置为新日期。这将允许您根据源数据设置唯一日期

Update c 
SET c.date = sheet.date 
from table C join excel_spreadsheet as "sheet" 
    on c.unique_id = sheet.unique_id
如果我误解了标准,请确保澄清现有数据集

直接从excel文件读取数据-必须可由SQL server访问

Update c 
SET c.date = sheet.date 
from table C join 
(
select * from OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0; Database=C:\Temp\Data.xlsx', [Sheet1$])
) as "sheet" 
    on c.unique_id = sheet.unique_id

您得到了什么错误?关于日期,您试图更改什么?请给出足够的例子,这样我们就可以了解为什么上面的查询不适用于您。您使用的是哪种产品?SQL只是一种查询语言,不是特定数据库产品的名称,您的查询是非标准SQL。请针对您正在使用的数据库产品,您可以尝试此更新c set c.date=1/01/2001 from tableName c其中c.Unique_id in select c.Unique_id from tableName为什么不编写数百条单独的更新语句?有时候最直接的做事方式也是最好的。Excel使其易于操作;只需将类似于更新表集合column1=A1的内容(其中column2=B1)放入单元格C1中,并向下拖动公式以获取其余数据。Boom,编写了数百条更新语句。我将研究如何将电子表格导入到临时表中,并尝试此操作。嘿,问一下,你也可以查看打开的行集。我将更新答案。使用openrowset示例更新。请注意,您需要修改数据库位置、工作表名称等;导入可能更干净,特别是如果这是一次性操作。如果要经常这样做,可以参数化文件名并使用动态SQL创建存储过程。