@WHATsMyName

Как исправить ошибку связанную с FULL JOIN?

Имеются 2 таблицы.
spoiler
Таблица A:
ID	Client
1	Bank 1
2	Bank 2
4	Bank 4
6	Bank 6
Таблица B:
ID	Payments
1	3000
2	1000
3	2000
4	4000
5	5000

Работаю через DBEAVER. ID двух таблиц соответственно primary key, с авто-увеличением и исключением NULL. С другими join-ами ошибок не выдает.
Запрос:
SELECT 
    A.Client, 
    B.Payments 
FROM 'DataBase'.A 
FULL  JOIN 'DataBase'.B 
ON A.ID=B.ID

Выдает ошибку:
SQL Error [1054] [42S22]: Unknown column 'A.Client' in 'field list'
  • Вопрос задан
  • 211 просмотров
Решения вопроса 1
@Akina
Сетевой и системный админ, SQL-программист.
MySQL в принципе не знает о существовании FULL JOIN. И это как раз тот редчайший случай, когда сообщение об ошибке не соответствует проблеме.

Проблема решается эмуляцией. Есть как минимум два варианта:

SELECT * FROM table1 LEFT JOIN table2 USING (column)
UNOIN ALL
SELECT * FROM table1 RIGHT JOIN table2 USING (column) WHERE table1.column IS NULL

SELECT *
FROM (
    SELECT DISTINCT column FROM table1
    UNION ALL
    SELECT DISTINCT column FROM table2
    ) AS table0
LEFT JOIN table1 USING (column)
LEFT JOIN table2 USING (column)

Во втором варианте кажется, что DICTINCT не нужны - но с ними работать будет заметно быстрее, особенно если поле индексировано.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы