gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 20:17:34 30 4
gpt4 key购买 nike

在 Visual Studio 2010 中的 SQL Server Compact Edition 中(也许是 SQL Server 和一般 SQL,我不知道),此命令有效:

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

但是此命令会产生错误:标识符 f 附近的错误。期待输出。

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

最佳答案

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

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

...虽然我看不到这个特定语句的别名的意义,特别是因为(至少 IIRC)这不再符合严格的 ANSI,可能在为多个平台编写时会造成不必要的障碍,并且会给学习普通 DML 基础知识的新用户带来复杂性和困惑。

这样就可以了,并且不需要别名:

DELETE dbo.foods WHERE name IN (...);

但是,正如评论所暗示的那样,对于其他查询形式(例如任何与关联、连接、EXISTS 等相结合的 DML)可能是必要的。在 SQL Server 中,您可以使用以下命令来执行此操作:

DELETE f
FROM dbo.foods AS f
INNER JOIN dbo.allergies AS a
ON f.FoodId = a.FoodId;

请记住,此查询可能必须在{而不是 SQL Server} 上以不同的方式构造。

关于sql - 为什么不能在 DELETE 语句中使用别名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36314336/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com