#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. Бармар, это идеально. Спасибо!