0

私はSubscriptionCharityという名前のこのテーブルを持っており、その名前は次のとおりです。

SubscriptionId       ChannelURI       CharUserID
1                       AX                12
2                       ZA                7
3                       AX                10

同じチャネルURIを持つテーブル内のレコードがあるかどうかを特定のCharUserIdで確認し、それをnullに設定したいので、このテーブルでは「Subcriptionid=1」をnullに設定する必要があります

これには2つのクエリがあります。1つはMSSQLManagement mで機能しますが、LINQでは機能しません:(行には影響しません)

UPDATE SubscriptionCharProg 
Set ChannelURI = null 
FROM SubscriptionCharProg as t1
INNER JOIN SubscriptionCharProg as t2 
    on t1.ChannelURI = t2.ChannelURI 
    and t1.DeviceId = t2.DeviceId 
WHERE CharUserId! = 5

LINQで機能するが、MS SQL管理では機能しない別の1つ:(MS SQL管理エラー:無効なオブジェクト名 "t1")

context.ExecuteStoreCommand("UPDATE t1 Set t1.ChannelURI = 1 FROM SubscriptionCharProg as t1 INNER JOIN  
  SubscriptionCharProg as t2 on t1.ChannelURI = t2.ChannelURI WHERE t1.CharUserId! = " 
  + charuserID + "", null);

また、主な問題は、両方のクエリがすべてのchannelURiをnullにすることです。

何かアイデアはありますか?

編集:特定のcharuserIDを持つレコードが2回以上存在する場合、それは保持され、nullに設定されません

4

3 に答える 3

0

最初の行を次のように変更します。

UPDATE SubscriptionCharProg 

UPDATE t1
于 2012-06-20T19:39:19.093 に答える
0

これを試して:

UPDATE t1
SET ChannelURI = null 
FROM SubscriptionCharProg as t1
INNER JOIN SubscriptionCharProg as t2 
    on t1.ChannelURI = t2.ChannelURI 
    and t1.DeviceId = t2.DeviceId 
    and t1.CharUserID <> t2.CharUserID
WHERE t2.CharUserID = 5
于 2012-06-21T00:41:01.397 に答える