如何更新行

时间:2011-02-10 07:23:04

标签: sql

我有一张这样的表: -

ID    Model     Value
DAX   FAB01     
DAZ   FAB01
DAA   FAB01
DAX   FAB02     
DAZ   FAB02
DAA   FAB02

我需要更新表格,以便最终输出如下: -

ID    Model     Value
DAX   FAB01     123
DAZ   FAB01     789  
DAA   FAB01     963
DAX   FAB02     456
DAZ   FAB02     951
DAA   FAB02     753

我尝试了下面的内容: -

UPDATE [TABLE]
SET VALUE = CASE
              WHEN MODEL='FAB01' AND ID='DAX' THEN '123'
              WHEN MODEL='FAB01' AND ID='DAZ' THEN '789'
              WHEN MODEL='FAB01' AND ID='DAA' THEN '963'
              WHEN MODEL='FAB02' AND ID='DAX' THEN '456'
              WHEN MODEL='FAB02' AND ID='DAX' THEN '951'
              WHEN MODEL='FAB02' AND ID='DAX' THEN '753'
              ELSE VALUE
            END

重新运行上述&它现在有效。

感谢。

4 个答案:

答案 0 :(得分:3)

   UPDATE [TABLENAME]
   SET VALUE = 123

   WHERE ID = "DAX" AND MODEL = "FAB01"

Etc..repeat for each row

答案 1 :(得分:2)

延伸到bAN的答案。更新应该是 -

UPDATE [TABLENAME]
SET [VALUE] = 123
WHERE ID = 'DAX'
AND Model = 'FAB01'

唯一性在表格中的两列(ID和模型)上。

答案 2 :(得分:2)

所有陈述:

UPDATE YourTableName SET [Value] = 123 WHERE [ID] = 'DAX' AND [model] = 'FAB01'
GO

UPDATE YourTableName SET [Value] = 789 WHERE [ID] = 'DAZ' AND [model] = 'FAB01'
GO

UPDATE YourTableName SET [Value] = 963 WHERE [ID] = 'DAA' AND [model] = 'FAB01'
GO

UPDATE YourTableName SET [Value] = 456 WHERE [ID] = 'DAX' AND [model] = 'FAB02'     
GO

UPDATE YourTableName SET [Value] = 951 WHERE [ID] = 'DAZ' AND [model] = 'FAB02'
GO

UPDATE YourTableName SET [Value] = 753 WHERE [ID] = 'DAA' AND [model] = 'FAB02'
GO

答案 3 :(得分:0)

或者,您可以尝试使用OPENROWSET()。这是一个例子:

UPDATE YourTable
SET Value = xls.ExcelColumnValue
FROM OPENROWSET(...) xls
WHERE YourTable.ID    = xls.ExcelColumnID
  AND YourTable.Model = xls.ExcelColumnModel

xls.之后的所有列名都是任意的,您应该用实际的列名替换它们。基本上,您只需使用SELECT * FROM OPENROWSET(...)即可找到它们。 (您也可以根据以下信息提前了解它们。)

现在是...部分。在这里定义源,特别是指定文件格式,文件名,工作表名称,还指定要使用的中间层软件,无论这意味着什么,以及源的某些属性。根据使用的Excel版本,您可以尝试以下变体:

  • for Excel 97-2003:
OPENROWSET (
  'Microsoft.Jet.OLEDB.4.0', 
  'Excel 8.0;HDR=YES;Database=C:\path\file.xls', 
  'SELECT * FROM [sheet name$]'
)
  • for Excel 2007 +:
OPENROWSET (
  'Microsoft.ACE.OLEDB.12.0',
  'Excel 12.0;HDR=YES;Database=C:\path\file.xls',
  'SELECT * FROM [sheet name$]'
)

使用实际文件名和工作表名称相应地替换斜体。

HDR=YES;选项指定第一行定义列名。如果在您的情况下第一行包含所有其他行的数据,只需删除此选项。