为什么我不能在DELETE语句中使用别名?

2024-03-29 11:06:04 发布

您现在位置:Python中文网/ 问答频道 /正文

在Visual Studio 2010的SQL Server Compact版本中(可能是sqlserver和SQL,我不知道),这个命令可以工作:

DELETE FROM foods WHERE (name IN ('chickens', 'rabbits'))

但是这个命令产生一个错误:Error near identifier f. Expecting OUTPUT.

DELETE FROM foods f WHERE (f.name IN ('chickens', 'rabbits'))

Tags: nameinfrom命令版本sqlserverwhere
2条回答

delete语句有奇怪的语法。事情是这样的:

DELETE f FROM foods f WHERE (f.name IN ('chickens', 'rabbits'))

要给表起别名,您必须说:

DELETE f FROM dbo.foods AS f WHERE f.name IN (...);

我看不到这个特定的DELETE语句的别名点,特别是因为(至少IIRC)它不再符合严格的ANSI。但是,是的,正如评论所建议的那样,对于其他查询表单(例如相关性)可能是必要的。

相关问题 更多 >