BEGIN TRANSACTION
DELETE FROM MessagesRead
WHERE [To] <> 'Feadmin'
AND [To] <> 'Catalonia'
AND [To] <> 'Bromordia'
AND [From] <> 'Feadmin'
AND [From] <> 'Catalonia'
AND [From] <> 'Bromordia'
AND MessageID IN (SELECT MessageID
FROM Messages
WHERE TickNr < ((SELECT TickNumber FROM CurrentTick)-1000))
AND Saved = 0 AND [Read] =1;
DELETE FROM Messages
WHERE MessageID NOT IN (SELECT DISTINCT MessageID FROM MessagesRead);
DELETE FROM MessagesAdmin
WHERE MessageID NOT IN (SELECT DISTINCT MessageID FROM Messages);
DELETE from DiscussionMessages
WHERE DATEDIFF(DAY,Inserted,CURRENT_TIMESTAMP) > 6000
COMMIT TRANSACTION
我刚刚从SQL Server 2012升级到2014年我跑已经工作上面的存储过程到现在为止收到错误消息:SQL - 子查询返回多个值
消息512,级别16,状态1,过程Engine_DeleteMessages,第9行
子查询返回多个值。当子查询遵循=,!=,<,< =,>,> =或当子查询用作表达式时,这是不允许的。
我明明已经制定了不应该说WHERE TickNr <
但我想不出更好的方式来这个词,或者为什么它工作,直到我升级?
它看起来像你的旧数据没有重复。 IN声明为您提供了返回大量记录的机会,大部分声明也是如此。也许添加一个Distinct到MessageID IN(SELECT ...)? – 2015-03-24 21:28:13