2017-10-11 71 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