Есть ли причина, по которой 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 имеет!