2017-10-11 14 views
0

同じテーブル内のデータに基づいてテーブル内の行を更新しようとしています。以下は、同じユーザーがスクリプトをすべて更新している47のpropertyidと1のPropertyValueをしていた私が書かれているクエリは、私が49のpropertyidたユーザーを更新しようとしています...同じテーブル内の行を更新する

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) 

です47のプロパティIDを持つユーザーは1のプロパティ値を持ちます。

+1

実際には、現在のスクリプトはすべてのユーザーを1のプロパティ値に更新してから、SELECTを実行します。 –

+1

ご使用のデータベースで質問にタグを付けてください。 –

+0

ユーザーは47のpropertyidと1のpropertyvalueを持ちます。そのユーザーは49のpropertyidと0のpropertyidも持っています。49と0を持つ行を49と1に更新するにはどうすればよいですか? – Awn85

答えて

1

ロジックを正しく書いていますが、実際には2つの別々のクエリで書きました。私はちょうど2つの別々のクエリを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'です。私はあなたの2つのクエリを接続するためにそれらを削除しました。 – batMan

0

あなたのサブクエリはPropertyIDが47である行を選択するので、そのトップクエリに渡されると、あなたは、サブクエリを必要としない49のPropertyIDを持つレコードがない、あなただけの必要single where句。

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

あなたの答えはどの行も返さないと思います – Madhukar

関連する問題