Sql server 找不到要更新的行

Sql server 找不到要更新的行,sql-server,tsql,linked-server,Sql Server,Tsql,Linked Server,我尝试使用以下命令从事件表中删除一些行 DECLARE @PRODUCTION_ID int = 13811 DELETE openquery(TEST, 'SELECT p.id as production_id FROM EVENTS ev LEFT JOIN production_seasons ps ON ev.production_season_id = ps.id LEFT JOIN productions p ON ps.production_id = p.id') whe

我尝试使用以下命令从事件表中删除一些行

DECLARE @PRODUCTION_ID int = 13811

DELETE openquery(TEST, 
'SELECT p.id as production_id FROM EVENTS ev 
LEFT JOIN production_seasons ps ON ev.production_season_id = ps.id 
LEFT JOIN productions p ON ps.production_id = p.id')
where production_id = @PRODUCTION_ID
但是,当返回事件时,即存在非空结果集时,查询将失败。如果结果集为空,查询只返回
(受影响的0行)

我得到的错误是:

返回链接服务器“测试”的OLE DB提供程序“MSDASQL” 消息“找不到要更新的行。某些值可能已被删除。” 自上次阅读后已更改。“


我不知道这意味着什么,非常感谢您的帮助。

上述查询已更改为:

DECLARE @TSQL varchar(500)
SELECT  @TSQL = 
'DELETE OPENQUERY(TEST,''SELECT ev.* FROM EVENTS ev 
LEFT JOIN production_seasons ps ON ev.production_season_id = ps.id 
LEFT JOIN productions p ON ps.production_id = p.id WHERE p.id = ' + convert(varchar, @PRODUCTION_ID) + ''')'
EXEC (@TSQL)
重要的部分是
select ev.*
,因为它似乎使其特定于从事件表中删除。帮助我认识到这一点


因为你不能通过openquery传递变量,我不得不利用它。

你有理由用
openquery
进行删除吗?你不能直接删除记录吗?链接到MySQL数据库。我不认为还有其他选择吗?我设法解决了这个问题,因为如果没有指定表,MySQL似乎会对删除哪些行感到困惑,即
SELECT EV.*
。添加一个“答案”案例有助于某人。