删除中不存在的地方

M_G*_*ths 4 t-sql sql-server

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

DELETE FROM Blog.Category c 
WHERE NOT EXISTS (SELECT * FROM Blog.Posts p
                  WHERE p.postCategory = blog.Category.catId)
Run Code Online (Sandbox Code Playgroud)

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

编辑

我也试过

DELETE FROM Blog.Category c 
where NOT EXISTS(SELECT * FROM Blog.Posts p WHERE  p.postCategory = c.catId)
Run Code Online (Sandbox Code Playgroud)

但是我得到

Incorrect syntax near 'c'

Igo*_*gor 15

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

DELETE c FROM Blog.Category c 
WHERE NOT EXISTS(SELECT * FROM Blog.Posts p WHERE  p.postCategory = c.catId)
Run Code Online (Sandbox Code Playgroud)

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

DELETE FROM Blog.Category
WHERE NOT EXISTS(SELECT * FROM Blog.Posts p WHERE  p.postCategory = Blog.Category.catId)
Run Code Online (Sandbox Code Playgroud)