Из этого туториала Вы узнаете, как использовать самосоединение 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 для соединения таблицы с самим собой.
Спасибо за чтение.