Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
117 of 150 menu
◀ ▶

Команда INNER JOIN

Команда INNER JOIN используется для объединения строк из двух таблиц на основе условия связи между столбцами. Связь обычно выполняется между PRIMARY KEY одной таблицы и соответствующим FOREIGN KEY другой таблицы.

При выполнении INNER JOIN база данных сравнивает значения указанных столбцов в обеих таблицах. В результат попадают только те строки, для которых найдено совпадение в обеих таблицах.

Если строка существует только в одной таблице, но не имеет соответствия в другой — она не будет включена в результат. Таким образом, INNER JOIN возвращает только пересечение данных.

Синтаксис

SELECT table1.column_list, table2.column_list FROM table1 INNER JOIN table2 ON table1.column_name = table2.column_name

Таблицы для примеров

countries
id name
1 Belarus
2 Russia
3 Ukraine
cities
id name country_id
1 Minsk 1
2 Vitebsk 1
3 Moscow 2
4 Vladivostok 2
6 London NULL

Пример

Давайте свяжем таблицы cities и countries по полям country_id и id, чтобы получить только те города, для которых существует связанная страна:

SELECT cities.id AS city_id, cities.name AS city_name, countries.name AS country_name FROM cities INNER JOIN countries ON countries.id = cities.country_id

Результат выполнения кода:

city_id city_name country_name
1 Minsk Belarus
2 Vitebsk Belarus
3 Moscow Russia
4 Vladivostok Russia

Пример

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

SELECT cities.id AS city_id, cities.name AS city_name, cities.country_id, countries.id AS country_id_ref, countries.name AS country_name FROM cities INNER JOIN countries ON cities.country_id = countries.id

Результат выполнения кода:

city_id city_name country_id country_id_ref country_name
1 Minsk 1 1 Belarus
2 Vitebsk 1 1 Belarus
3 Moscow 2 2 Russia
4 Vladivostok 2 2 Russia

Пример

Давайте выберем только города, относящиеся к стране Russia, используя условие после соединения таблиц:

SELECT cities.name AS city_name, countries.name AS country_name FROM cities INNER JOIN countries ON countries.id = cities.country_id WHERE countries.name = 'Russia'

Результат выполнения кода:

city_name country_name
Moscow Russia
Vladivostok Russia

Смотрите также

  • JOIN,
    которая объединяет таблицы по условию
  • LEFT JOIN,
    которая сохраняет все строки левой таблицы
  • RIGHT JOIN,
    которая сохраняет все строки правой таблицы
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить