【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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM