我尝试过一个场景,需要在netezza中存储最近5个月的数据。下面是我尝试过的代码。但在那之后我灵机一动,并立即解决了这个问题。
create table test(yermon int,number int);
insert into test values(201607,1);
insert into test values(201606,2);
insert into test values(201605,3);
insert into test values(201604,4);
insert into test values(201603,5);
然后,如果我插入带有新年月份的新记录,我的以下逻辑将起作用。
delete from test where yermon in (select min(yermon) from test where no=5);
update test set no = no + 1;
insert into test values(201608,1);
但是如果我再次运行相同的两次。 201607会去存储两次,201603会删除。
我也需要一个删除和更新语句来包含这种情况。有人可以帮我解决这个问题吗? 提前致谢!
最佳答案
你能试试这个吗?
CREATE TABLE `test` (
year_month int(6),
number int(11),
PRIMARY KEY year_month
);
我找到了MERGE INTO
statement ,也许我错了,但是测试一下:
MERGE INTO test AS dst USING test AS src ON (src.year_month=201608)
WHEN MATCHED THEN UPDATE SET dst.number = 1
WHEN NOT MATCHED THEN INSERT VALUES(201608, 1);
关于mysql - 需要在删除和插入模式下将最近5个月的数据存储在表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38401353/