обновление записей?
WITH
tmpCustomer AS (
SELECT c.customer_id AS id, c.email
FROM oc_order r
INNER JOIN oc_customer c ON c.customer_id = r.customer_id
WHERE r.order_status_id = 6 AND c.customer_group_id < 3
GROUP BY c.customer_id
HAVING COUNT(*) > 4
),
tmpCustomerU AS (
UPDATE oc_customer SET customer_group_id = 3 WHERE customer_id IN (SELECT id FROM tmpCustomer)
)
SELECT email FROM tmpCustomer
Стикер
Ну да, то же самое с CTE - но UPDATE
так не пишет ошибку когда внутри CTE UPDATE
Я не понял...
Посмотрел запрос — нет, неверно. Нельзя писать внутри CTE UPDATE, CTE - это встроенный VIEW, и именно так его надо использовать. Примерно так WITH tmpCustomer AS ( SELECT c.customer_id AS id, c.email FROM oc_order r INNER JOIN oc_customer c ON c.customer_id = r.customer_id WHERE r.order_status_id = 6 AND c.customer_group_id < 3 GROUP BY c.customer_id HAVING COUNT(*) > 4 ), UPDATE oc_customer SET customer_group_id = 3 WHERE customer_id IN (SELECT id FROM tmpCustomer)
SQL Error [1064] [42000]: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UPDATE oc_customer SET customer_group_id = 3 WHERE customer_id = 3
Почему тогда ты написал "НЕ ПИШЕТ ОШИБКУ" ?
ну тогда не получить список с таблицы tmpCustomer. В PostgresSQL это норм отрабатывает такие конструкции. Спасибо
Обсуждают сегодня