Срок после УДАЛИТЬ в MySQL - PullRequest
       1

Срок после УДАЛИТЬ в MySQL

0 голосов
/ 22 января 2019

Данный пример кода:

DELETE d
FROM discog d
JOIN discog d1 ON d1.artist = d.artist AND d1.track = d.track AND d1.year < d.year;

Я не понимаю роль d, которая идет после УДАЛЕНИЯ. Из того, что я понимаю, структура синтаксиса должна быть

УДАЛИТЬ ИЗ ИМЕНИ table_ *

ГДЕ some_column = some_value

Что автор включил d после УДАЛЕНИЯ для? Что представляет собой эта позиция?

Ответы [ 2 ]

0 голосов
/ 22 января 2019

У этого delete есть две ссылки на таблицу:

DELETE d
    FROM discog d JOIN
         discog d1
         ON d1.artist = d.artist AND d1.track = d.track AND d1.year < d.year;

В этом случае ссылки относятся к одной и той же таблице, но к разным строкам.

Как MySQL узнает, какие строкиудалить?Возможно, вы захотите, чтобы MySQL просто удалил из первой таблицы, на которую ссылаются, но явное включение псевдонима - лучшее решение - для этого требуется, чтобы при написании запроса были действительно ясны намерения кода.

0 голосов
/ 22 января 2019

Это синтаксис для удаления внутреннего соединения. D означает, что вы хотите удалить записи из таблицы с псевдонимом d, что является discog.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...