zoukankan      html  css  js  c++  java
  • 【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
  • 相关阅读:
    JS 面向对象
    inline-block元素间隙处理
    MUI
    MUI
    chrome://inspect调试html页面空白,DOM无法加载的解决方案
    MUI
    MUI
    MUI
    MUI
    MUI
  • 原文地址:https://www.cnblogs.com/willingtolove/p/9398114.html
Copyright © 2011-2022 走看看