Если требуется выполнить эквисоединение не по всем столбцам с совпадающими именами, а только по их части, тогда мы можем использовать соединение USING:
Список столбцов содержит те столбцы, по которым выполняется эквисоединение. Соответственно, в этом списке могут присутствовать только те из столбцов, имена которых совпадают в обеих соединяемых таблицах.
Сравните результаты следующих запросов (предикат в предложении WHERE использован лишь для сокращения размера выборки).
Соединение строк из таблиц Income и Outcome по равенству значений в столбце date (база данных Фирма вторсырья)
SELECT * FROM Income JOIN Outcome USING(date)
WHERE MONTH(date) >= 4;
date
code
point
inc
code
point
out
2001-04-13 00:00:00
6
1
5000.00
7
1
4490.00
2001-04-13 00:00:00
10
1
5000.00
7
1
4490.00
2001-05-11 00:00:00
7
1
4500.00
9
1
2530.00
2001-09-13 00:00:00
12
3
1350.00
16
3
1200.00
2001-09-13 00:00:00
13
3
1750.00
16
3
1200.00
2001-09-13 00:00:00
12
3
1350.00
17
3
1500.00
2001-09-13 00:00:00
13
3
1750.00
17
3
1500.00
Соединение строк из таблиц Income и Outcome по равенству значений в столбцах date и point
SELECT * FROM Income JOIN Outcome USING(date, point)
WHERE MONTH(date) >= 4;
point
date
code
inc
code
out
1
2001-04-13 00:00:00
6
5000.00
7
4490.00
1
2001-04-13 00:00:00
10
5000.00
7
4490.00
1
2001-05-11 00:00:00
7
4500.00
9
2530.00
3
2001-09-13 00:00:00
12
1350.00
16
1200.00
3
2001-09-13 00:00:00
13
1750.00
16
1200.00
3
2001-09-13 00:00:00
12
1350.00
17
1500.00
3
2001-09-13 00:00:00
13
1750.00
17
1500.00
Соединение строк из таблиц Income и Outcome по равенству значений в столбцах date, point и code
SELECT * FROM Income JOIN Outcome USING(date, point, code);
не возвращает строк.
Это соединение по всем столбцам с совпадающими именами эквивалентно естественному соединению
SELECT * FROM Income NATURALJOIN Outcome;
Чтобы продемонстрировать вывод в последнем варианте, воспользуемся левым соединением
SELECT * FROM Income LEFTJOIN Outcome USING(date, point, code)