【问题标题】:Update statement with Array in Sql management studio在 Sql 管理工作室中使用 Array 更新语句
【发布时间】:2015-05-28 21:44:50
【问题描述】:

我是 SQL 新手,想知道是否可以使用数组来更新表中的记录。

数组的元素与表中的列相关。例如Element[0] 与 column1 相关,Element[1] 与 column2 相关,Element[2] 与 column3 相关。 Element[4] 再次与 column1 相关,依此类推。

我想将 element[0] 与 column1 中的值进行匹配,以识别特定记录并使用 Element[3] 和 [4] 的值更新第 2 列和第 3 列。

基于插入到数组中,我编写了以下查询。

Update dbo.pv_service
Set pv_services.Service=@S and DsCode=@d
((22,'TEST',10),(0,'TES2',10) as (@P,@S,@d)) as T
where T.@P=pv_services.ServiceCode

这甚至可能吗?

问候,

【问题讨论】:

  • 您使用的是 MS SQL Server 吗?您将使用临时表或表变量(在 sql server 中)而不是数组
  • @CeOnSql dbo 是用于 ms sql server 的架构名称。

标签: sql


【解决方案1】:

正如评论中提到的,您可以使用临时表来做到这一点:

CREATE TABLE #array(
    Col1 INT,
    Col2 VARCHAR(10),
    Col3 VARCHAR(10),
    Col4 VARCHAR(10)
)

/* 
optional TO DO here: create index on #array table if necessary 
*/

INSERT INTO #array 
VALUES  (1,'some','randrom','text'),
        (1345,'any','other','bullsh**')

UPDATE YT  
SET YT.Col2 = A.Col2,
    YT.Col3 = A.Col3,
    YT.Col4 = A.Col4
FROM    dbo.YourTable YT
        INNER JOIN #array A ON YT.Col1 = A.Col1

DROP TABLE #array

或者您使用表变量:

DECLARE @array TABLE
    (
        Col1 INT,
        Col2 VARCHAR(10),
        Col3 VARCHAR(10),
        Col4 VARCHAR(10)
    )

INSERT INTO @array 
VALUES  (1,'some','randrom','text'),
        (1345,'any','other','bullsh**')

UPDATE YT  
SET YT.Col2 = A.Col2,
    YT.Col3 = A.Col3,
    YT.Col4 = A.Col4
FROM    dbo.YourTable YT
        INNER JOIN @array A ON YT.Col1 = A.Col1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多