BIG_DATA_SYSTEMS_ANALYSIS Telegram 77
Разгадка тайн соединения NULL-значений в SQL

Продолжим серию статей про особенности работы с #null 🙂 да, они ещё не закончились.

Одна из часто встречающихся проблем — непонимание как происходит JOIN таблиц с NULL-значениями. Давайте посмотрим на примерах.

Допустим у нас есть две таблицы:

user_names
us_id  name
1 Илья
2 Ольга
3 Null
Null Null

user_roles
us_id  role
1 admin
2 user
3 user
Null guest
Null Null


INNER JOIN

Строки, для которых нет совпадения в обеих таблицах, исключаются из результирующего набора. В том числе, если в столбце, по которому происходит соединение, встречаются значения с NULL, эти строки будут исключены из результата, так как два NULL нельзя сравнить между собой.
SELECT u.us_id, r.us_id, name, role
FROM user_names u
INNER JOIN user_roles r ON u.us_id = r.us_id;


Результат:
u.us_id   r.ud_id  name   role
1 1 Илья admin
2 2 Ольга user
3 3 Null user


LEFT JOIN
Возвращает все записи из левой таблицы (users_name) и соответствующие записи из правой таблицы (users_role).
SELECT u.us_id, r.us_id, name, role
FROM user_names u
LEFT JOIN user_roles r ON u.us_id = r.us_id;


Результат:
u.us_id   r.ud_id  name   role
1 1 Илья admin
2 2 Ольга user
3 3 Null user
Null Null Null Null

Здесь стоит отметить, что появившиеся Null в полях r.ud_id — не являются Null-значениями из таблицы users_role.

FULL JOIN
Возвращает все записи, включая совпадения в левой или правой таблице. Строки в любой из таблиц будут содержать NULL значения в столбцах из другой таблицы, в случае отсутствия совпадения по ключу.
SELECT u.us_id, r.us_id, name, role
FROM user_names u
FULL JOIN user_roles r ON u.us_id = r.us_id;


Результат:
u.us_id   r.ud_id  name   role
1 1 Илья admin
2 2 Ольга user
3 3 Null user
Null Null Null Null
Null Null Null guest
Null Null Null Null

Обратим внимание, что строки с NULL NULL повторяются дважды, так как они не равны друг другу и их нельзя объединить.

#sql #null
Please open Telegram to view this post
VIEW IN TELEGRAM
1



tgoop.com/big_data_systems_analysis/77
Create:
Last Update:

Разгадка тайн соединения NULL-значений в SQL

Продолжим серию статей про особенности работы с #null 🙂 да, они ещё не закончились.

Одна из часто встречающихся проблем — непонимание как происходит JOIN таблиц с NULL-значениями. Давайте посмотрим на примерах.

Допустим у нас есть две таблицы:

user_names

us_id  name
1 Илья
2 Ольга
3 Null
Null Null

user_roles
us_id  role
1 admin
2 user
3 user
Null guest
Null Null


INNER JOIN

Строки, для которых нет совпадения в обеих таблицах, исключаются из результирующего набора. В том числе, если в столбце, по которому происходит соединение, встречаются значения с NULL, эти строки будут исключены из результата, так как два NULL нельзя сравнить между собой.
SELECT u.us_id, r.us_id, name, role
FROM user_names u
INNER JOIN user_roles r ON u.us_id = r.us_id;


Результат:
u.us_id   r.ud_id  name   role
1 1 Илья admin
2 2 Ольга user
3 3 Null user


LEFT JOIN
Возвращает все записи из левой таблицы (users_name) и соответствующие записи из правой таблицы (users_role).
SELECT u.us_id, r.us_id, name, role
FROM user_names u
LEFT JOIN user_roles r ON u.us_id = r.us_id;


Результат:
u.us_id   r.ud_id  name   role
1 1 Илья admin
2 2 Ольга user
3 3 Null user
Null Null Null Null

Здесь стоит отметить, что появившиеся Null в полях r.ud_id — не являются Null-значениями из таблицы users_role.

FULL JOIN
Возвращает все записи, включая совпадения в левой или правой таблице. Строки в любой из таблиц будут содержать NULL значения в столбцах из другой таблицы, в случае отсутствия совпадения по ключу.
SELECT u.us_id, r.us_id, name, role
FROM user_names u
FULL JOIN user_roles r ON u.us_id = r.us_id;


Результат:
u.us_id   r.ud_id  name   role
1 1 Илья admin
2 2 Ольга user
3 3 Null user
Null Null Null Null
Null Null Null guest
Null Null Null Null

Обратим внимание, что строки с NULL NULL повторяются дважды, так как они не равны друг другу и их нельзя объединить.

#sql #null

BY В мире больших данных


Share with your friend now:
tgoop.com/big_data_systems_analysis/77

View MORE
Open in Telegram


Telegram News

Date: |

As five out of seven counts were serious, Hui sentenced Ng to six years and six months in jail. Co-founder of NFT renting protocol Rentable World emiliano.eth shared the group Tuesday morning on Twitter, calling out the "degenerate" community, or crypto obsessives that engage in high-risk trading. When choosing the right name for your Telegram channel, use the language of your target audience. The name must sum up the essence of your channel in 1-3 words. If you’re planning to expand your Telegram audience, it makes sense to incorporate keywords into your name. SUCK Channel Telegram Hui said the time period and nature of some offences “overlapped” and thus their prison terms could be served concurrently. The judge ordered Ng to be jailed for a total of six years and six months.
from us


Telegram В мире больших данных
FROM American