Обновить таблицу с псевдонимом в предложении where [duplicate]

0

Мне нужно немного помочь в заявлении об обновлении. У меня есть следующий запрос

  update totals
  set contacts = (SELECT 
      COUNT(*)
        FROM contact_events c
        JOIN users u
        ON c.user = u.id 
        GROUP BY c.user)
  where c.user = ext_id;

Но когда я запускаю его, я получаю "неизвестный столбец c.user в where clause".

Однако я не могу применить псевдоним в этом соединении, поэтому я должен делать что-то неправильно с синтаксисом.

  • 0
    Псевдоним c находится в вашем подзапросе, поэтому вне основного контекста. Это всегда имеет место в подзапросах, где псевдонимы, используемые в скобках, используются только в скобках. Ваш запрос необходимо будет переписать, чтобы использовать правильный синтаксис для оператора UPDATE, который ссылается на другую таблицу.
  • 0
    Спасибо, у меня были проблемы с поиском другого вопроса для этого, но это выглядит идеально
Теги:

1 ответ

1
Лучший ответ

Вы должны использовать JOIN для выполнения такой операции

UPDATE totals t
INNER JOIN (SELECT c.user, 
                COUNT(*) tot
            FROM contact_events c
        JOIN users u ON c.user = u.id GROUP BY c.user) u ON u.user = t.ext_id
SET t.contacts = u.tot

Ещё вопросы

Сообщество Overcoder
Наверх
Меню