在存在语句中使用表变量
我试图根据条件更新表变量内的列,条件是表变量的 ID 不存在于不同的表中:
DECLARE @BugRep TABLE(BugCode VARCHAR(50),DevFirstName VARCHAR(50), DevLastName VARCHAR(50), BugDate VARCHAR(20), IsValid VARCHAR(1))
UPDATE @BugRep
SET IsValid = 'N' WHERE NOT EXISTS(SELECT * FROM BUG b WHERE @BugRep.BUGCODE = b.CODE)
当我尝试编译包含这些语句的过程时,我得到一个“必须声明标量变量“@BugRep”消息。
我如何在 NOT EXISTS 子句中使用表变量?
我正在使用 SQL Server 2008
I am trying to update a column inside of a table variable based on a condition, the condition being that the ID of the table variable does not exist in a different table:
DECLARE @BugRep TABLE(BugCode VARCHAR(50),DevFirstName VARCHAR(50), DevLastName VARCHAR(50), BugDate VARCHAR(20), IsValid VARCHAR(1))
UPDATE @BugRep
SET IsValid = 'N' WHERE NOT EXISTS(SELECT * FROM BUG b WHERE @BugRep.BUGCODE = b.CODE)
When i try to compile the procedure that has these statements, I get a "Must declare the scalar variable "@BugRep" message.
How do i go about using the table variable inside of the NOT EXISTS clause?
I am using SQL Server 2008
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这会起作用:
顺便说一下,您还需要将“b.CODE”更改为“b.BUGCODE”;)
This will work:
You'll also need to change "b.CODE" to "b.BUGCODE" by the way ;)
这实际上是非常挑剔的。使用 womp 的建议查看下面的内嵌注释,并尝试使用 LEFT OUTER JOIN。
This is actually very picky. Check out the in-line comments below using womp's suggestion and also trying a LEFT OUTER JOIN.
这是前两个版本使用别名来解决您的问题:
这也避免了与“不为空”和“不存在”相关的低效率。
Here's a version of the previous two using aliases to get around your issue:
This also avoids the inefficiencies related to "is not null" and "not exists".