sql - Delete From 语句中带有别名的表变量

标签 sql sql-server alias

我想根据同一个表中其他行的存在情况从 SQL Server 2000/2005 表变量中删除行(如果存在具有相同日期的非 0 计数行,则删除所有 0 计数行)。这是一个简化的示例,应该只删除首先添加的行:

declare @O table (
    Month datetime,
    ACount int NULL
)

insert into @O values ('2009-01-01', 0)
insert into @O values ('2009-01-01', 1)
insert into @O values ('2008-01-01', 1)
insert into @O values ('2007-01-01', 0)

delete from @O o1
where ACount = 0
  and exists (select Month from @O o2 where o1.Month = o2.Month and o2.ACount > 0)

问题是我无法让 SQL Server 接受表变量的 o1 别名(并且我认为由于“o1.Month = o2.Month”匹配字段,需要别名名称)。错误是:

Msg 102, Level 15, State 1, Line 11

Incorrect syntax near 'o1'.

最佳答案

FROM语句之前指定别名 这意味着,您正在从别名表中删除。

delete o1
from   @O as o1
where  ACount = 0 
       and exists ( select  Month 
                    from    @O o2 
                    where   o1.Month = o2.Month 
                            and o2.ACount > 0)


结果

alt text

关于sql - Delete From 语句中带有别名的表变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/597513/

相关文章:

php - 如何显示表中固定数量的条目

Ruby:给类中的方法起别名

objective-c - 检查路径是否是 ObjC 中的文件夹/bundle/别名

mysql - 从基于其他数据库mysql的表中删除

sql - postgresql ,当 null 存在时如何递增

mysql - 拥有超过 2 个 child 的 parent

c# - 如何在 Orchard 的迁移中创建一个 GUID 列?

sql-server - 以特定用户身份执行 xp_cmdshell 命令

sql - 解析带下划线的 SQL Server 数字文字

mysql - (MS Access MySQL) FROM 带别名的子查询