【问题标题】:TSQL: Swap two values of the same type in diffrent tablesT SQL:交换不同表中相同类型的两个值
【发布时间】:2012-05-20 11:35:49
【问题描述】:

我在不同的表中有两个自定义类型的值:DB1.TBL1.Val 和 DB2.TBL2.Val。是否可以将这些交换为值?这两个值是同一个类型的,这个类型是datBlob。

再一次:我的数据库 DB1 和表 TBL1 包含许多记录和一些字段,包括 Val。假设我确定了保证这两个返回的行是正确的条件。其他数据库 DB2 也是如此。我想交换这两个值。

换句话说,我想要类似的东西

UPDATE DB1.TBL1 SET Val=(SELECT Val FROM DB2.Tbl2.Val WHERE MyGUID='WOW') WHERE MyGUID='Wow'

【问题讨论】:

  • 您必须以某种方式识别行,这两个值在哪里。或者您想“交换”这 2 列中的所有值?
  • 所以?我可以识别例如:SELECT DB1.TBL1.Val WHERE OtherUniqueval='{Some GUID}'

标签: sql sql-server-2008


【解决方案1】:

没有神奇的值交换。您必须编写代码才能完成这项工作。下面的代码显示了如何。您必须适应数据类型、表名等以及如何找到需要更新的行。

-- Value from DB1
declare @B1 as int

-- Value from DB2
declare @B2 as int

-- Get value from DB1
select @B1 = Val
from DB1.dbo.TBL1.Val
where ID = 1

-- Get value from DB2
select @B2 = Val
from DB2.dbo.TBL2.Val
where ID = 1

-- Update value in DB1
update DB1.dbo.TBL1
set Val = @B2
where ID = 1

-- Update value in DB2
update DB2.dbo.TBL2
set Val = @B1
where ID = 1

【讨论】:

  • 好的,如果我的字段是 datBlob 类型,而不是 int,我应该声明什么?
  • datBlob的定义是什么?
  • 我不能保证,但我怀疑这是二进制 BLOB。但是 DECLARE @val binary dows 不起作用。
  • 如果您有一个名为datBlobuser-defined type,那么您可以在声明变量时使用datBlob 而不是intdeclare @B1 datBlob。确保 DB1DB2 是当前数据库。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-08-18
  • 2011-02-15
  • 1970-01-01
  • 1970-01-01
  • 2020-06-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多