Есть ли причина, по которой MySQL не поддерживает FULL OUTER JOINS?

Есть ли причина, по которой MySQL не поддерживает FULL OUTER JOINS? Я много раз пробовал полный внешний синтаксис соединения в mysql, и он никогда не работал, просто обнаружил, что он не поддерживается mysql, поэтому просто любопытно, почему?

Ответы

Ответ 1

MySQL не имеет большого количества функций, которые имеются в других базах данных *. Я думаю, что у них довольно большое отставание идей и недостаточно разработчиков для их реализации.

Эта функция была запрошена в 2006 году и до сих пор не реализована. Я предполагаю, что он имеет низкий приоритет, потому что вы можете обойти его, объединив LEFT и RIGHT OUTER JOIN с UNION ALL. Не нравится, но это трюк. Измените это:

SELECT *
FROM table1
FULL OUTER JOIN table2
ON table1.table2_id = table2.id

:

SELECT *
FROM table1
LEFT JOIN table2
ON table1.table2_id = table2.id
UNION ALL
SELECT *
FROM table1
RIGHT JOIN table2
ON table1.table2_id = table2.id
WHERE table1.table2_id IS NULL

* Чтобы быть честным с MySQL, у них также есть некоторые функции, которых нет у многих других баз данных.

Ответ 2

Я не верю, что разработчики MySQL никогда не заявляли каких-либо технических причин, почему это может быть сложно реализовать.

Но MySQL, как и большинство СУБД, имеет множество мест, где он не полностью реализует стандарт ANSI. Поскольку FULL OUTER JOIN является редко используемой функцией и обычно может быть заменен на временное решение UNION, есть небольшое давление, чтобы зафиксировать его.

Я предлагаю добавить свой голос в ошибка 18003.

Ответ 3

Потому что он никогда не реализовывался разработчиками MySQL. Зачем? Потому что не было достаточного давления со стороны клиентов.

Ответ 4

Из большой системы я обычно могу использовать FULL OUTER JOIN, возможно, один или два раза, поэтому для вас нет огромного спроса, и, конечно же, вы можете довольно легко и потенциально работать вокруг него (если вы выводят производные столбцы на основе результатов влево/вправо) с UNION of LEFT и RIGHT JOINs.

Ответ 5

поскольку продукт созревает, с каждым выпуском добавляется больше функций. просто сделайте так, чтобы это не было реализовано. Я уверен, что в конце концов это будет, это не значит, что MySql плох или что-то еще, у каждой базы данных есть дополнительные, а также отсутствующие функции. Я бы хотел, чтобы у SQL Server была функция групповой конкатенации, которую MySql имеет!