mysql - 需要在删除和插入模式下将最近5个月的数据存储在表中

标签 mysql sql netezza

我尝试过一个场景,需要在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/

相关文章:

php - 我需要为mysql上的表行增量设置外键吗

java - 在 SQL 语句中使用变量而不是 TableName

sql - Visual Studio 2010 数据库版本架构比较,其中目标是 dbproj

hadoop - Sqoop 直接导入 Netezza 表权限

sql - 从一个表到另一个表的Netezza UPDATE

sql - NZSQL/代码 - Netezza NZ-SQL 中的 LEFT() 函数

mysql - 替换在 mysql 和 mariadb 中不起作用的正则表达式

javascript - 将 SQL 的表输出样式化到相应的 Bootstrap 列中

mysql - "Can' t 连接到 MySQL 服务器”,仅当客户端是远程服务器时

sql - 在其他查询中重用一个查询中的 FROM 子句 (Oracle)