Self Join в MySQL — это тип соединения SQL, позволяющий присоединить таблицу к самой себе. Он работает с использованием других типов соединения, таких как предложение внутреннего или левого соединения, для объединения строк на основе указанных условий.
Из этой статье Вы узнаете, как использовать самосоединение в MySQL для слияния таблицы с самой собой и создания настраиваемых данных.
Self Join в MySQL использует псевдонимы таблиц, чтобы гарантировать, что вы не повторяете одну и ту же таблицу более одного раза в одном операторе.
Общий синтаксис использования самосоединения аналогичен синтаксису при объединении двух таблиц. Однако мы используем псевдонимы таблиц. Рассмотрим запрос, показанный ниже:
SELECT alias1.cols, alias2.cols FROM tbl1 alias1, tbl2 alias2 WHERE [condition]
Давайте воспользуемся примерами, чтобы понять, как выполнять самостоятельное присоединение к MySQL. Предположим, у вас есть база данных со следующей информацией (см. Полный запрос ниже)
DROP SCHEMA IF EXISTS self; CREATE SCHEMA self; USE self; CREATE TABLE users( id INT PRIMARY KEY AUTO_INCREMENT, first_name VARCHAR(255), email VARCHAR(255), payment_id INT, subscription INT ); INSERT INTO users(first_name, email, payment_id, subscription) VALUES ("Valerie G. Phillip", "ValerieGPhillip@teleworm.us", 10001, 1), ("Sean R. Storie", "SeanRStorie@rhyta.com", 10005, 2), ("Bobby S. Newsome", "BobbySNewsome@armyspy.com", 100010, 5);
Мы начнем с ВНУТРЕННЕГО (INNER JOIN) соединения и, наконец, с левого соединения.
Приведенный ниже запрос выполняет INNER JOIN с таблицей, созданной выше.
SELECT al1.* FROM users al1 INNER JOIN users al2 ON al1.subscription = al2.subscription ORDER BY id DESC;
Пример запроса ниже объясняет, как мы можем использовать самостоятельное соединение с левым соединением.
SELECT (CONCAT(al1.first_name, ' -> ', al2.email)) AS details , al1.payment_id FROM users al1 LEFT JOIN users al2 ON al1.id=al2.id;
В этой статье вы узнали, как можно использовать Self Join в MySQL для соединения таблицы с самим собой.