删除中不存在的地方

时间:2018-07-31 15:45:47

标签: sql-server tsql

我遇到的一个简单问题。我从以下SQL中收到语法错误:

DELETE FROM Blog.Category c 
WHERE NOT EXISTS (SELECT * FROM Blog.Posts p
                  WHERE p.postCategory = blog.Category.catId)

很显然,我在这里错过了一些愚蠢的事情。任何提示将不胜感激。

编辑

我也尝试过

DELETE FROM Blog.Category c 
where NOT EXISTS(SELECT * FROM Blog.Posts p WHERE  p.postCategory = c.catId)

但是我得到

Incorrect syntax near 'c'

4 个答案:

答案 0 :(得分:2)

我更喜欢更新和删除别名表,

dist = int((Decimal('1.5')-1) * 1000)

查询中的问题是您为表加上别名,然后不在EXISTS中使用它。

答案 1 :(得分:2)

DELETE语句之后,您直接缺少别名。

DELETE c FROM Blog.Category c 
WHERE NOT EXISTS(SELECT * FROM Blog.Posts p WHERE  p.postCategory = c.catId)

或者,您可以省略别名并使用完整的表名。

DELETE FROM Blog.Category
WHERE NOT EXISTS(SELECT * FROM Blog.Posts p WHERE  p.postCategory = Blog.Category.catId)

答案 2 :(得分:1)

尝试以下查询,我认为它与别名有关:

DELETE FROM Blog.Category c 
WHERE NOT EXISTS (SELECT * FROM Blog.Posts p
                  WHERE p.postCategory = c.catId);

答案 3 :(得分:1)

此处是同一主题

  

在SQL Server中,当不存在使用时,需要为要连接的表设置别名,并在delete语句中指定要从中删除行的表。

Trying to delete when not exists is not working. Multiple columns in primary key