我来自C#linq背景所以我试图学习SQL。 我想要一个简单的子查询,它将使用与[User]表中的ContactID相对应的新UserID更新我的[AccountContact]表中的多个记录。 我不想使用连接。
我的代码如下
UPDATE [dbo].[AccountContact]
SET UserID = (SELECT UserID from [User] WHERE ContactID IS NOT NULL),
ContactID = null
GO
先谢谢 通过运行此代码我得到错误
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
答案 0 :(得分:0)
我认为你需要这个
UPDATE [dbo].[AccountContact] SET UserID = 'Whatever value you want',
ContactID = null where UserID = (SELECT UserID from [User] WHERE ContactID IS NOT NULL)
答案 1 :(得分:0)
查找图像的附加链接
我需要做的是更新我的AccountContact表,其中userID为null,
需要发生的是在帐户联系人表中,您看到第一条记录没有UserID,只有一个ContactID。
ContactID 28的UserID为3,如[User]表所示。
现在,AccountContact表需要更新所有记录,其中UserID = Null。
然后,一旦在AccountContact表中更新了所有UserID,就必须将ContactID设置为null。
我的Query运行后,AccountContact表应如下
它只是更新[AccountContact]中的所有UserID,并使用来自[User]的正确对应的UserID,其中有一个ContactID
答案 2 :(得分:0)
我找到了解决这个问题的方法
我编辑了我的代码如下
UPDATE [AccountContact]
SET UserID = ISNULL((SELECT UserID FROM [User] WHERE [User].[ContactID] = [AccountContact].[ContactID]),[AccountContact].UserID),
ContactID = NULL
WHERE [AccountContact].[ContactID] IS NOT NULL
这正是我所需要的。