2017-10-11 31 views
0

我试图根据同一个表内的数据更新表内的行。下面是我写的查询......更新同一个表内的行

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) 

我试图更新已属性ID的49个用户正在同一用户拥有的47物业ID和一个1的的PropertyValue脚本更新所有具有47的财产的用户具有1的属性值。

+1

实际上,您当前的脚本会更新所有用户的属性值为1,然后执行SELECT操作。 –

+1

用你正在使用的数据库标记你的问题。 –

+0

用户有一个47的财产ID和一个属性值1.该用户也有49的财产ID和一个属性值为0.我如何更新有49和0到49和1的行? – Awn85

回答

1

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

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

这解决了我的问题。空间是问题。谢谢蝙蝠侠! – Awn85

+0

没有空格不是问题,你的第5,6,7行是'SELECT [UserId] FROM qf.UserCustomProperty'。我已经删除这些来连接你的两个查询。 – batMan

0

你的子查询选择行,其中的物业ID是47,所以当其向上传递到上面的查询中,有与49一物业ID没有记录您不需要的子查询,你只需要一个单条款;

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

我认为你的答案不会返回任何行 – Madhukar