Оператор Mysql- цикла отсылает один столбец к разнице двух других

#mysql

#mysql

Вопрос:

В MySQL я хочу сделать столбец a (строка 2) равным столбцу c (строка 1) минус столбец b (строка 1) для многих строк. Единственный способ, которым я могу понять, как это сделать, — создать новый столбец d, который выполняет c-b, где строка = 1. Проблема в том, что мне приходится делать это много раз, и я знаю, что это не очень эффективно.

Заранее благодарю вас за любые рекомендации о наилучшем способе сделать это.

 create table example (row int not null, a int not null, b int not null, c int not null);
insert into example (row,a,b,c) (1,2,5,20) (2,15,18,72) (3,54,57,228);
  

Комментарии:

1. Гарантированно ли номера строк будут последовательными?

2. Пожалуйста, отредактируйте свой код mysql, чтобы включить VALUES ключевое слово и запятые в соответствующих местах

Ответ №1:

Если номера строк являются последовательными, вы можете использовать самосоединение, чтобы связать строку n со строкой n 1 .

 UPDATE example AS e1
JOIN example AS e2 ON e1.row = e2.row   1
SET e1.a = e2.c - e2.b
  

Комментарии:

1. Бармар, это идеально. Спасибо!