我有一個大的訂購表。具有幾十萬個訂單記錄的訂單表最近添加了一個新的列invoice_no,我需要根據舊訂單記錄的不同(user_id,seller,addtime)創建invoice_no值。基於不同列的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以從nextval獲取invoice_no,但不起作用。 –
我沒有得到?如果您有一張表,並且開頭的invoice num爲空,那麼運行上面的查詢將會在表中重置它們,這意味着它會更新表格,然後只做select就會按預期給出結果。讓我知道如果我失去了一些東西。 –