MySQL-delete tableName from ...
前言
今天刷SQL题的时候遇到一个没见过的SQL写法:delete tableName from ...,看到这个写法脑子突然有点痒了,接着就是一系列疑问。这个写法学过吗?我不是刚学完基础语法吗?我怎么没见过这个写法?这个能运行吗?这个语法是意思?不应该是 delete from tableName...吗?
一、有没有这个语法?
由于刚复习完基础语法,我的第一反应就是没有这个语法。所以我又在学习笔记了找了找了确实没有这个介绍这个语法,那别的同学有记录吗?找了几位同学的博客发现也没有。那么就实锤了在学基础语法的时候这个语法根本就没有介绍。
二、这个语法是意思?
没学过,不知道是什么意思,所以问了一下AI,还真有解释还挺详细。
实例:196. 删除重复的电子邮箱 - 力扣(LeetCode)
DELETE p1
FROM Person p1,Person p2
WHEREp1.Email = p2.Email AND p1.Id > p2.Id
1. DELETE p1
的含义
DELETE
是 SQL 的删除命令。p1
是Person
表的别名(在FROM
子句中定义)。DELETE p1
明确表示:只删除来自别名为p1
的表(即Person
表)的行。
关键点:这里 p1
和 p2
都指向同一个物理表 Person
,但通过别名,我们将其视为两个逻辑上的“副本”来进行自连接操作。DELETE p1
指定的是删除 p1
这个“副本”所代表的行。
总结
DELETE p1
在这个语句中,是 MySQL 特有的语法,用于指定在多表(或自连接)操作中,具体要删除哪个表(或其别名)的行。