Как обновить столбец в запросе в MySQL - PullRequest
0 голосов
/ 12 октября 2018

Я хочу обновить столбец, используя функцию агрегирования, но я не хочу циклически проходить по каждой строке.Я пришел с SQL Server, где мы делаем что-то вроде

With CTE as (select name, price, cost,  quantity price*quantity as total)
update CTE 
   set cost = total

С этим я могу обновить всю таблицу, не просматривая каждую запись.Как я могу выполнить ту же задачу в MySQL

Ответы [ 2 ]

0 голосов
/ 12 октября 2018

Мое предложение - вообще не хранить столбец cost.Вместо этого создайте представление:

CREATE VIEW sales_with_cost 
AS 
select name, price, cost,  quantity, price*quantity as total FROM sales

Вы можете использовать sales_with_cost вместо sales напрямую и можете гарантировать, что ваши данные непротиворечивы без необходимости обновления.

0 голосов
/ 12 октября 2018

Просто выполните вычисления:

update sales 
    set cost = price * quantity
where . . . ;

Однако то же самое будет работать с SQL Server, не нужно использовать updateble CTE:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...