• 【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
  • 相关阅读:
    Android学习笔记触摸事件
    Android学习笔记长按事件的处理
    Android学习笔记物理按键事件处理
    JAVA爬虫入门学习
    SpringBoot的服务入门(Get、Post)
    spring boot 入门学习
    Java 爬虫简单起步
    哇 好久不写C 忘得差不多
    Winfrom窗体应用程序___CefSharp的基础应用
    Winfrom窗体应用程序___DataGridView
  • 原文地址:https://www.cnblogs.com/willingtolove/p/9398114.html
Copyright © 2020-2023  润新知