更新同一个表中的行

时间:2017-10-11 13:44:12

标签: sql

我正在尝试根据同一个表中的数据更新表中的行。以下是我写的查询...

Update qf.UserCustomProperty

SET PropertyValue = '1'

SELECT      
[UserId]
FROM qf.UserCustomProperty
WHERE PropertyId = 49
and UserId IN
(SELECT
 UserId
 FROM qf.UserCustomProperty
 WHERE PropertyId = 47
 AND PropertyValue = 1)

我正在尝试更新属性为49的用户,同一用户的属性值为47,属性值为1.该脚本正在更新属性值为47的所有用户,其属性值为1。

2 个答案:

答案 0 :(得分:1)

我看到你已经正确地编写了逻辑,但实际上你已经在两个单独的查询中编写了它。我刚刚将两个单独的查询合并为一个。这应该有用。

Update qf.UserCustomProperty
SET PropertyValue = '1'
WHERE PropertyId = 49
and UserId IN
(SELECT
 UserId
 FROM qf.UserCustomProperty
 WHERE PropertyId = 47
 AND PropertyValue = 1)

答案 1 :(得分:0)

您的子查询选择PropertyID为47的行,因此当它传递给顶部查询时,没有PropertyID为49的记录。您不需要子查询,只需要一个where子句;

where PropertyID = 47 and PropertyID = 49 and PropertyValue = 1