Sobes.tech
Junior
111
questionbank

В чем разница между RIGHT JOIN, LEFT JOIN и INNER JOIN?

AI答案

sobes.tech AI

  • INNER JOIN: Возвращает строки, только если совпадающие значения существуют в обеих таблицах.
  • LEFT JOIN: Возвращает все строки из левой таблицы и совпадающие строки из правой. Если совпадений нет, возвращаются NULL значения для столбцов из правой таблицы.
  • RIGHT JOIN: Возвращает все строки из правой таблицы и совпадающие строки из левой. Если совпадений нет, возвращаются NULL значения для столбцов из левой таблицы.

Пример на SQL:

-- Таблица users
CREATE TABLE users (
    user_id INT PRIMARY KEY,
    username VARCHAR(50)
);

INSERT INTO users (user_id, username) VALUES
(1, 'Alice'),
(2, 'Bob'),
(3, 'Charlie');

-- Таблица orders
CREATE TABLE orders (
    order_id INT PRIMARY KEY,
    user_id INT,
    product VARCHAR(50)
);

INSERT INTO orders (order_id, user_id, product) VALUES
(101, 1, 'Laptop'),
(102, 2, 'Mouse'),
(103, 1, 'Keyboard');
-- INNER JOIN: Вернет Alice (Laptop, Keyboard) и Bob (Mouse)
SELECT u.username, o.product
FROM users u
INNER JOIN orders o ON u.user_id = o.user_id;
-- LEFT JOIN: Вернет Alice (Laptop, Keyboard), Bob (Mouse) и Charlie (NULL)
SELECT u.username, o.product
FROM users u
LEFT JOIN orders o ON u.user_id = o.user_id;
-- RIGHT JOIN: Вернет Alice (Laptop, Keyboard), Bob (Mouse)
-- (Если бы в orders были записи без user_id, они бы тоже вернулись)
SELECT u.username, o.product
FROM users u
RIGHT JOIN orders o ON u.user_id = o.user_id;