Лявото съединение в MySQL се използва за запитване на записи от множество таблици. Тази клауза е подобна на клаузата Inner Join, която може да се използва с оператор SELECT непосредствено след ключовата дума FROM. Когато използваме клаузата за свързване отляво, тя ще върне всички записи от първата (лявата) таблица, дори няма намерени съответстващи записи от втората (дясна) таблица. Ако не намери съответстващ запис от дясната странична таблица, връща нула.
С други думи, клаузата Left Join връща всички редове от лявата таблица и съвпадащи записи от дясната таблица или връща Null, ако не е намерен съответстващ запис. Това присъединяване може също да се нарече a Ляво външно съединение клауза. Така че Outer е незадължителната ключова дума за използване с Left Join.
Можем да го разберем със следното визуално представяне, където Left Joins връща всички записи от лявата таблица и само съответстващите записи от дясната странична таблица:
Синтаксис на MySQL LEFT JOIN
Следният синтаксис обяснява клаузата Left Join за свързване на две или повече таблици:
SELECT columns FROM table1 LEFT [OUTER] JOIN table2 ON Join_Condition;
В горния синтаксис, маса 1 е лявата маса и таблица2 е дясната маса. Тази клауза връща всички записи от таблица1 и съответстващи записи от таблица2 въз основа на указаното условие за присъединяване .
Пример за MySQL LEFT JOIN
Нека вземем няколко примера, за да разберем работата на клаузата Left Join или Left Outer Join:
Клауза LEFT JOIN за свързване на две таблици
Тук ще създадем две таблици ' клиенти' и ' поръчки' който съдържа следните данни:
Маса: клиенти
Таблица: поръчки
За да изберете записи от двете таблици, изпълнете следната заявка:
SELECT customers.customer_id, cust_name, price, date FROM customers LEFT JOIN orders ON customers.customer_id = orders.customer_id;
След успешното изпълнение на заявката, тя ще даде следния резултат:
подстриг на javascript
MySQL LEFT JOIN с клауза USING
Таблицата клиенти и поръчки имат едно и също име на колона, което е customer_id. В този случай MySQL Left Join може също да се използва с клаузата USING за достъп до записите. Следният оператор връща идентификатор на клиента, име на клиент, професия, цена и дата, като използва клаузата за ляво присъединяване с ключовата дума USING.
SELECT customer_id, cust_name, occupation, price, date FROM customers LEFT JOIN orders USING(customer_id);
Горното изявление ще даде следния резултат:
MySQL LEFT JOIN с група по клауза
Лявото присъединяване може да се използва и с клаузата GROUP BY. Следващият оператор връща идентификатор на клиента, име на клиент, квалификация, цена и дата, като използва клаузата Left Join с клаузата GROUP BY.
SELECT customers.customer_id, cust_name, qualification, price, date FROM customers LEFT JOIN orders ON customers.customer_id = orders.customer_id GROUP BY price;
Горното изявление ще даде следния резултат:
LEFT JOIN с клауза WHERE
Клаузата WHERE се използва за връщане на филтър резултат от таблицата. Следният пример илюстрира това с клаузата Left Join:
SELECT customer_id, cust_name, occupation, price, date FROM customers LEFT JOIN orders USING(customer_id) WHERE price>2500;
Това твърдение дава следния резултат:
MySQL LEFT JOIN Множество таблици
Вече създадохме две таблици с име ' клиенти' и ' поръчки' . Нека създадем още една таблица и я именуваме като ' контакти', който съдържа следните данни:
Изпълнете следния оператор, за да се присъедините към трите таблици клиенти, поръчки и контакти:
SELECT customers.customer_id, cust_name, order_id, price, cellphone FROM customers LEFT JOIN contacts ON customer_id = contact_id LEFT JOIN orders ON customers.customer_id = orders.customer_id ORDER BY income;
След успешното изпълнение на горната заявка, тя ще даде следния резултат:
Използване на клауза LEFT JOIN за получаване на несравними записи
Клаузата LEFT JOIN също е полезна в такъв случай, когато искаме да получим записи в таблицата, която не съдържа съвпадащи редове с данни от друга таблица.
Можем да го разберем със следния пример, който използва клаузата LEFT JOIN, за да намери клиент, който няма номер на мобилен телефон:
може ли Android да играе gamepigeon
SELECT customer_id, cust_name, cellphone, homephone FROM customers LEFT JOIN contacts ON customer_id = contact_id WHERE cellphone IS NULL ;
Горният израз връща следния резултат:
Разлика между клаузата WHERE и ON в MySQL LEFT JOIN
В LEFT Join условието WHERE и ON дава различен резултат. Можем да видим следните заявки, за да разберем разликите им:
Клауза WHERE
SELECT cust_name, occupation, order_id, price, date FROM customers LEFT JOIN orders USING(customer_id) WHERE price=2500;
Той ще даде следния резултат, който се връща:
ON клауза
SELECT cust_name, occupation, order_id, price, date FROM customers LEFT JOIN orders ON price=2500;
Той ще даде следния резултат: