我遇到的一个简单问题。我从以下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'
答案 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