Я пытаюсь использовать MySQL для создания представления с предложением "WITH"
WITH authorRating(aname, rating) AS
SELECT aname, AVG(quantity)
FROM book
GROUP BY aname
Но похоже, что MySQL не поддерживает это.
Я думал, что это довольно стандартно, и я уверен, что Oracle поддерживает это. Есть ли способ заставить MySQL использовать предложение «WITH»? Я пробовал это с движком MyISAM и innoDB. Оба они не работают.
Возможно, вам будет интересно что-нибудь вроде этого:
источник
Subquery
это имя, которое я использовал для самой производной таблицы. Когда вы используете,from ( ... )
вы создаете что-то вроде временной таблицы (производной таблицы), и для нее требуется имя. Вот почему я использовалas Subquery
. Отвечая на ваш вопрос, да, вы можете, но вам нужно будет указать имя внешней производной таблицы (непосредственно передGroup By
). Надеюсь, это помогло.Синтаксис у вас правильный:
Однако, как уже упоминалось, MySQL не поддерживает эту команду. WITH был добавлен в SQL: 1999; новейшая версия стандарта SQL - SQL: 2008. Вы можете найти дополнительную информацию о базах данных, поддерживающих различные функции SQL: 1999, в Википедии .
MySQL традиционно немного отставал в поддержке стандарта SQL, в то время как коммерческие базы данных, такие как Oracle, SQL Server (недавно) и DB2, следовали им чуть более внимательно. PostgreSQL, как правило, также хорошо соответствует стандартам.
Возможно, вы захотите взглянуть на дорожную карту MySQL; Я не совсем уверен, когда эта функция может поддерживаться, но она отлично подходит для создания читаемых сводных запросов.
источник
Oracle поддерживает СО.
Это выглядело бы так.
@ysth WITH сложно использовать в Google, потому что это обычное слово, которое обычно исключается из поиска.
Вы бы хотели посмотреть документацию SELECT, чтобы увидеть, как работает факторинг подзапросов.
Я знаю, что это не отвечает на OP, но я убираю любую путаницу, которая могла начаться.
источник
Основываясь на ответе @Mosty Mostacho, вот как вы могли бы сделать что-то эквивалентное в MySQL для конкретного случая определения того, какие записи не существуют в таблице и не находятся в какой-либо другой базе данных.
Вы можете использовать текстовый редактор с возможностями макросов для преобразования списка значений в указанное в кавычках предложение select union.
источник
MariaDB теперь поддерживает WITH. MySQL пока нет. https://mariadb.com/kb/en/mariadb/with/
источник
источник
Вы когда-нибудь пробовали временную таблицу? Это решило мою беседу:
Затем вы можете использовать эту таблицу при каждом выборе в этом сеансе:
источник