У меня есть таблица большого заказа. Таблица заказов с несколькими сотнями тысяч записей заказов и недавно добавить новый столбец invoice_no, и мне нужно создать значение invoice_no на основе отдельных (user_id, seller, addtime) для старой записи заказа.колонка обновления Mysql на основе отдельной колонки
CREATE TABLE `TEST_ORDER`(
`ORDER_ID` INT(11),
`USER_ID` INT(11),
`SELLER` VARCHAR(50),
`ADDTIME` INT(11),
`GOODS_NAME` VARCHAR(50),
`PRICE` FLOAT(11,2),
`INVOICE_NO` INT(11)
);
INSERT into `TEST_ORDER` (`ORDER_ID`, `USER_ID`, `SELLER`, `ADDTIME`,
`GOODS_NAME`, `PRICE`, `INVOICE_NO`)
values('1','1','AMAZON','1399109546','BOOK 1','10',NULL);
INSERT into `TEST_ORDER` (`ORDER_ID`, `USER_ID`, `SELLER`, `ADDTIME`,
`GOODS_NAME`, `PRICE`, `INVOICE_NO`)
values('2','1','AMAZON','1399109546','BOOK 2','20','NULL');
INSERT into `TEST_ORDER` (`ORDER_ID`, `USER_ID`, `SELLER`, `ADDTIME`,
`GOODS_NAME`, `PRICE`, `INVOICE_NO`)
values('3','2','EBAY','1438582766','BOOK 3','10',NULL);
INSERT into `TEST_ORDER` (`ORDER_ID`, `USER_ID`, `SELLER`, `ADDTIME`,
`GOODS_NAME`, `PRICE`, `INVOICE_NO`)
values('4','2','EBAY','1438582766','BOOK 4','20',NULL);
INSERT into `TEST_ORDER` (`ORDER_ID`, `USER_ID`, `SELLER`, `ADDTIME`,
`GOODS_NAME`, `PRICE`, `INVOICE_NO`)
values('5','3','AMAZON','1399109546','BOOK 1','10',NULL);
Ожидаемый результат
Может ли это быть сделано обычным обновление SQL запроса, или мне нужно написать процедуру магазина и цикл каждый заказ записи, чтобы проверить порядок принадлежат одной invoice_no?
благодарит вас очень много, и это работа. Однако номер счета-фактуры выбирается из вызова функции. SELECT nextval ('invoice_no') AS invoice_no. Как мне заменить @ rn + 1 на этот вызов функции? –
Я заменяю sql, чтобы получить invoice_no из nextval, но не работает. –
Я не понял? Если у вас есть таблица, как вы указали, где номер счета имеет значение null в начале, то выполнение вышеуказанного запроса приведет к их сбросу в таблице, то есть обновит таблицу, а затем просто сделав select, вы получите результат, как ожидалось. Дайте мне знать, если я что-то упустил. –