Sql 是否使用内部联接更新查询。。。。?

Sql 是否使用内部联接更新查询。。。。?,sql,sql-server,sql-server-2008,sql-server-2005,linq-to-sql,Sql,Sql Server,Sql Server 2008,Sql Server 2005,Linq To Sql,我有一个名为SubscriptionCharity的表,其如下所示: SubscriptionId ChannelURI CharUserID 1 AX 12 2 ZA 7 3 AX 10 我想检查表中是否有任何记录具有相同的通道uri,并将其设置为n

我有一个名为SubscriptionCharity的表,其如下所示:

SubscriptionId       ChannelURI       CharUserID
1                       AX                12
2                       ZA                7
3                       AX                10
我想检查表中是否有任何记录具有相同的通道uri,并将其设置为null,以便在该表中“Subcriptionid=1”应设置为null

我对此有两个查询,一个在MS SQL管理m中工作,但不在LINQ中工作: (它不影响行)

另一个适用于LINQ,但不适用于MS SQL管理: (MS SQL管理错误:无效的对象名称“t1”)

另外,主要的问题是,这两个查询都会使每个channelURi为空,无论其是否相等

有什么想法吗


编辑:如果具有特定charuserID的a记录存在两次或两次以上,它将保留该记录,并且未将其设置为null,则将第一行更改为:

UPDATE SubscriptionCharProg 

试试这个:

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
更新t1
设置ChannelURI=null
从SubscriptionCharProg到t1
内部联接下标CHARPROG as t2
在t1.ChannelURI=t2.ChannelURI上
t1.DeviceId=t2.DeviceId
和t1.CharUserID t2.CharUserID
其中t2.CharUserID=5

done,linq给出了错误:charuserid不明确,MS-management给出了错误:无法更新charuserid
context。ExecuteStoreCommand(…)
并不是真正的linq-to-SQL操作(我假设这意味着linq-to-SQL操作),但我认为您应该尝试使用
context.ExecuteCommand(…)
相反。仍然存在初始问题,即它会使channeluri列中的所有行都为空。我想在同一个表中检查特定的CharUserID,如果有另一个CharUserID具有相同的channeluri,则将其设置为空,对deviceId列表示抱歉。啊,好的,我看到了,我刚刚更新了查询以反映这一点。试一试。我刚刚重新创建了您的精确表,插入了您的示例数据并运行了我的查询,它在Microsoft SQL Server Management Studio中按预期工作,没有任何错误。您是否准确地复制并粘贴了查询?您正在使用哪个版本的SQL Server?是的,我使用了,我正在Visual Studio 2010中使用服务器资源管理器
UPDATE SubscriptionCharProg 
UPDATE t1
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
update quiz_subgroup as sg  

inner join (select qq_qsg_id, count(qq_id) as cnt_ques from quiz_questions group by qq_qsg_id) as ques on(ques.qq_qsg_id = sg.qsg_id) 

set sg.qsg_count_of_questions = ques.cnt_ques;