Sql 是否使用内部联接更新查询。。。。?
我有一个名为SubscriptionCharity的表,其如下所示: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
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给出了错误:无法更新charuseridcontext。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;