MySQL中删除后的术语

MySQL中删除后的术语,mysql,sql,Mysql,Sql,给定此示例代码: DELETE d FROM discog d JOIN discog d1 ON d1.artist = d.artist AND d1.track = d.track AND d1.year < d.year; DELETE d 从迪斯科舞厅 在d1.artist=d.artist和d1.track=d.track以及d1.year

给定此示例代码:

DELETE d
FROM discog d
JOIN discog d1 ON d1.artist = d.artist AND d1.track = d.track AND d1.year < d.year;
DELETE d
从迪斯科舞厅
在d1.artist=d.artist和d1.track=d.track以及d1.year
我不明白删除后的
d
的作用。 据我所知,语法的结构应该是

从表\u名称中删除

其中某个_列=某个_值


作者在删除后添加了什么
d
?这个位置代表什么?

这是内部联接-删除的语法。d表示要从表中删除别名为d的记录,即discog

这是内部联接删除的语法。d表示要从表中删除别名为d的记录,即discog

delete
有两个表引用:

DELETE d
    FROM discog d JOIN
         discog d1
         ON d1.artist = d.artist AND d1.track = d.track AND d1.year < d.year;
DELETE d
从discog d加入
迪斯科d1
d1.artist=d.artist,d1.track=d.track,d1.year
在这种情况下,引用指向同一个表,但指向不同的行


MySQL如何知道要删除哪些行?您可能希望MySQL只从第一个引用的表中删除,但显式地包含别名是更好的解决方案——它需要编写查询以真正清楚代码的意图。

删除
有两个表引用:

DELETE d
    FROM discog d JOIN
         discog d1
         ON d1.artist = d.artist AND d1.track = d.track AND d1.year < d.year;
DELETE d
从discog d加入
迪斯科d1
d1.artist=d.artist,d1.track=d.track,d1.year
在这种情况下,引用指向同一个表,但指向不同的行


MySQL如何知道要删除哪些行?您可能希望MySQL只从第一个引用的表中删除,但显式地包含别名是更好的解决方案——它需要编写查询以真正清楚代码的意图。

可能重复,可能重复,为什么discog有两个别名
d
d1
?我们不能同时使用
d
吗?是同一张桌子吗?@ptrco。一点也不。您需要区分对表的引用。否则,不平等将如何工作?为什么discog有两个别名
d
d1
?我们不能同时使用
d
吗?是同一张桌子吗?@ptrco。一点也不。您需要区分对表的引用。否则,不平等将如何发挥作用?