Когда использовать самосоединение MySQL и примеры

When Use Mysql Self Join



Самосоединение MySQL - это тип соединения SQL, позволяющий присоединить таблицу к самой себе. Он работает с использованием других типов соединения, таких как предложение внутреннего или левого соединения, для объединения строк на основе указанных условий.

Из этого туториала Вы узнаете, как использовать самосоединение MySQL для слияния таблицы с самой собой и создания настраиваемых данных.







Основное использование

Самосоединение MySQL использует псевдонимы таблиц, чтобы гарантировать, что вы не повторяете одну и ту же таблицу более одного раза в одном операторе.



ЗАМЕТКА: Если вы не знакомы с псевдонимами таблиц, обратите внимание на другой наш учебник, в котором полностью объясняется эта концепция.



Общий синтаксис использования самосоединения аналогичен синтаксису при объединении двух таблиц. Однако мы используем псевдонимы таблиц. Рассмотрим запрос, показанный ниже:





ВЫБРАТЬ alias1.cols,alias2.cols ИЗ tbl1 псевдоним1,tbl2 alias2 КУДА [состояние]

Примеры использования

Давайте воспользуемся примерами, чтобы понять, как выполнять самостоятельное объединение MySQL. Предположим, у вас есть база данных со следующей информацией (см. Полный запрос ниже)

УРОНИТЬ СХЕМА ЕСЛИ СУЩЕСТВУЮТ себя;
СОЗДАЙТЕ СХЕМА себя;
ИСПОЛЬЗОВАТЬ себя;
СОЗДАЙТЕ СТОЛ пользователи(
я бы INT ОСНОВНОЙ КЛЮЧ АВТОМАТИЧЕСКОЕ ПРИРАЩЕНИЕ ,
имя VARCHAR (255),
Эл. адрес VARCHAR (255),
payment_id INT ,
подписка INT
);
ВСТАВЛЯТЬ В пользователи(имя,Эл. адрес,payment_id,подписка) ЦЕННОСТИ ('Валери Г. Филлип', '[электронная почта защищена]', 10001, 1), ('Истории Шона Р.', '[электронная почта защищена]', 10005, 2), ('Бобби С. Ньюсом', '[электронная почта защищена]', 100010, 5);

Мы начнем с ВНУТРЕННЕГО соединения и, наконец, с левого соединения.



Самостоятельное присоединение с помощью внутреннего соединения

Приведенный ниже запрос выполняет ВНУТРЕННЕЕ соединение с таблицей, созданной выше.

ВЫБРАТЬ al1.* ИЗ пользователи al1 ВНУТРЕННИЙ ПРИСОЕДИНИТЬСЯ пользователи al2 НА al1.subscriptionзнак равноal2.subscription СОРТИРОВАТЬ ПО я бы DESC ;

Результат показан ниже:

Самостоятельное соединение с использованием левого соединения

Пример запроса ниже объясняет, как мы можем использовать самостоятельное соединение с левым соединением.

ВЫБРАТЬ ( КОНКАТ (al1.first_name, '->',al2.email)) В КАЧЕСТВЕ Детали,al1.payment_id ИЗ пользователи al1 ЛЕВЫЙ ПРИСОЕДИНИТЬСЯ пользователи al2 НА al1.idзнак равноal2.id;

Результат вывода ниже:

Заключение

В этом руководстве вы познакомились с тем, как использовать самосоединение MySQL для соединения таблицы с самим собой.

Спасибо за чтение.