informix 中update 前2条记录的 SQL语句

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了informix 中update 前2条记录的 SQL语句相关的知识,希望对你有一定的参考价值。

如何写这条SQL语句 或前N条记录的SQL语句
我的问题是说到了,是informix的数据库

先试了下用update table_name set ne_type=10003 where rowid in (select first 2 rowid from table_name),但是提示报错,Error: Cannot use 'first' in this context.
想了很长时间没有办法,先把rowid放进去一个临时表,再从临时表查询更新.

select first 3 rowid as id from tpa_rnc_sum into temp temp_table;

update table_name set ne_type=10003 where rowid in (select id from temp_table);

不知道还没有其他的好方法,尽力了~
参考技术A update tb01 set fd1 = 'aa'
where id in (select top 10 id from tb01)
参考技术B 看你是哪个版本的数据库了,如果是10以后的版本,可以使用 skip来跳跃选页的。

如何从雪花数据库中的表中删除前 N 条记录

【中文标题】如何从雪花数据库中的表中删除前 N 条记录【英文标题】:How to DELETE top N records from Table in Snowflake Database 【发布时间】:2020-08-21 12:30:17 【问题描述】:

我想在Snowflake DB中执行DELETE操作,有记录限制,我的要求是批量执行DELETE操作,比如先删除前1000条记录,然后再删除下1000条记录等等。

在 SQL Server 中,我们可以使用如下查询:

DELETE TOP (1000) FROM TABLE_NAME;

我正在寻找有关 Snowflake DB 的类似查询,我浏览了 Snowflake 文档以进行删除 - https://docs.snowflake.com/en/sql-reference/sql/delete.html,但我没有找到与 TOPLIMIT 匹配的语法。

【问题讨论】:

【参考方案1】:

这可能不是您正在寻找的答案,但您在 SQL Server 上删除 1000 个块的原因是因为 SQL Server 将这些记录到事务日志中,删除记录,更新索引等,而且更多以这种方式做事很有效率。在雪花中,它不是。

Snowflake 不记录删除,没有索引,事实上,它实际上并没有删除记录,而是重新创建这些记录来自的微分区,而不会删除记录。所以,事实上,在 Snowflake 中小批量删除实际上效率要低得多。相反,您应该简单地使用您希望删除的记录发出一条删除语句,然后让它完成它的工作。

【讨论】:

【参考方案2】:

试试这个


DELETE FROM  <TABLE>
WHERE <ID_COL> IN
(
SELECT TOP 2 <ID_COL> FROM <TABLE>);

【讨论】:

以上是关于informix 中update 前2条记录的 SQL语句的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有 MERGE 语句的情况下执行 Update else Insert 操作 win INFORMIX

在 UPDATE 查询中使用 DateTime 或字符串参数时,Informix 11.7 返回 -1 作为受影响的行数

如何避免informix中的锁异常

从每组 sqlite 中选择前 n 条记录

informix/oracle rowid 问题

更新前 10000 行,然后更新下 10000 行,以此类推?