WITH в MySQL?

Поддерживает ли MySQL общие выражения таблиц? Например, в Oracle есть предложение WITH ? :

WITH aliasname
AS
  ( SELECT COUNT(*) FROM table_name )
SELECT COUNT(*) FROM dept,aliasname
4
nl ja de
добавлено автор Mark Bannister, источник
@BhavikShah - они спрашивают о поддержке общих табличных выражений в MySQL
добавлено автор APC, источник
AS используется для имени псевдонима, не знает о oracle. Каков ваш вопрос?
добавлено автор Bhavik Shah, источник

3 ответы

Один из способов - использовать подзапрос:

  SELECT COUNT(*) 
  FROM dept,
  ( 
      SELECT COUNT(*) 
      FROM table_name
  ) AS aliasname

Обратите внимание, что , между двумя таблицами будет пересекать две таблицы так же, как и в вашем запрошенном вами сообщении. ЕСЛИ существует какая-либо связь между ними, вы можете вместо этого JOIN их использовать.

1
добавлено
@Madhav Нет, в MySQL нет WITH , как я понимаю из вопроса, ему нужно что-то вроде Oracle CTE, которое определяется с помощью предложения WITH , альтернативный способ в MySQL заключается в использовании подзапроса.
добавлено автор Mahmoud Gamal, источник
Это предложение WITH в mysql?
добавлено автор Madhav, источник
SELECT t.name,
       t.num
  FROM TABLE t
  JOIN (SELECT c.id,COUNT(*) 'num1'
          FROM TABLE1 c
         WHERE c.column = 'a'
      GROUP BY c.id) ta1 ON ta1.id = t.id
 JOIN (SELECT d.id,COUNT(*) 'num2'
          FROM TABLE2 d
         WHERE d.column = 'a'
      GROUP BY d.id) ta2 ON ta2.id = t.id
1
добавлено

Нет, MySQL не поддерживает Common Table Expressions (CTE). Поэтому вместо использования WITH tablealias as (....) вам нужно будет выполнить подзапрос.

Например,

WITH totalcount AS 
(select userid, count(*) as tot from logins group by userid)
SELECT a.firstname, a.lastname, b.tot
FROM users a
INNER JOIN 
totalcount b 
    on a.userid = b.userid

могут быть переписаны в MySQL как

SELECT a.firstname, a.lastname, b.totalcount
FROM users a
INNER JOIN 
(select userid, count(*) as tot from logins group by userid) b 
    on a.userid = b.userid
1
добавлено
DBA - русскоговорящее сообщество
DBA - русскоговорящее сообщество
1 345 участник(ов)

Общаемся и обсуждаем темы, посвященные DBA, PostgreSQL, Redis, MongoDB, MySQL, neo4j, riak и т.д. См. также: @devops_ru, @kubernetes_ru, @docker_ru, @nodejs_ru Рекомендуем сразу отключить уведомления, чтобы пребывание здесь было полезным и комфортным.

MySQL
MySQL
995 участник(ов)

The group is about MySQL. For code use hastebin.com. Admin: @smlkw

Oracle RU
Oracle RU
303 участник(ов)

Русскоязычная группа по Oracle. — Архитектура СУБД — PL/SQL — Оптимизация — Администрирование — Вакансии Oracle (указать инфу по вилке ЗП и удалёнке) Приглашайте коллег :-) Запрещены: личные оскорбления, обсуждения оффтопик вопросов политики и религии