НОВИНКА!
Занимательная математика от Трепачёва. Присоединяйтесь к нам!
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 для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить