【MSSQL】SqlServer中delete语句表别名的问题
正文
1、一般情况下删除表数据的sql语句:
delete from products where rowid>2
2、如果想给表起个别名再删除呢,就得像下面这样写了
delete products from products as p where p.rowid>2
也可这样
delete p from products as p where p.rowid>6
3、想一下,什么情况下删除一个表数据的时候要用别名呢?
之所以要用别名,是因为delete的where条件中需要用到子查询写一些条件,举例:
利用自连接删除表中重复的数据:
CREATE TABLE [dbo].[products1] ( [rowid] [int] primary key IDENTITY(1,1) NOT NULL, [name] [nchar](10) NULL, [price] [int] NULL ) INSERT INTO Products VALUES('苹果', 50); INSERT INTO Products VALUES('橘子', 100); INSERT INTO Products VALUES('橘子', 100); INSERT INTO Products VALUES('橘子', 100); INSERT INTO Products VALUES('香蕉', 80); INSERT INTO Products VALUES('香蕉', 80);
delete products from products as p1 where p1.rowid< ( select MAX(p2.rowid) from products p2 where p1.name=p2.name and p1.price=p2.price ) --结果: -- rowid name price -- 1 苹果 50 -- 4 橘子 100 -- 6 香蕉 80
4、其他数据库的情况
ORACLE 可以直接起别名
delete from products p where p.rowid>2
SQLSERVER/MYSQL 可以这样起别名
delete products from products as p where p.rowid>2
delete p from products as p where p.rowid>6
作者:willingtolove
出处:http://www.cnblogs.com/willingtolove/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
分类:
【 SQL 相关】
, 【 SqlServer 相关】
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构