如何在 HSQL DB 中创建具有最大行值的序列?

Posted

技术标签:

【中文标题】如何在 HSQL DB 中创建具有最大行值的序列?【英文标题】:How to create sequence with maximum row value of a column in HSQL DB? 【发布时间】:2019-10-10 11:05:44 【问题描述】:

我需要创建一个从 HSQL 中列的最大行值开始的序列。有什么程序可以做对吗?

CREATE SEQUENCE seq START WITH 1 INCREMENT BY 1 => 工作正常

如果我这样给予 CREATE SEQUENCE seq START WITH SELECT MAX(ID) FROM TEST INCREMENT BY 1

显示错误:意外令牌:SELECT / 错误代码:-5581 / 状态:42581

【问题讨论】:

如果你不是用 liquibase 创建的,为什么还要有 Liquibase 标签 其实在知道查询后我也必须在 liquibase 中创建它 【参考方案1】:

我不确定我是否正确理解您的问题,但在 H2 中您可以使用

CREATE SEQUENCE SEQ START WITH 9223372036854775807 INCREMENT BY -1

它将返回值 9223372036854775807、9223372036854775806、9223372036854775805、...

在 HSQLDB 中你可以使用非常相似的

CREATE SEQUENCE SEQ START WITH 2147483647 INCREMENT BY -1

对于无法容纳如此大值的列,应减小初始值。

如果您有一个包含现有值的表,并希望找到其中最大的一个并将其用作序列的起始值,则在 H2 中您可以直接使用子查询:

CREATE SEQUENCE SEQ START WITH (SELECT MAX(columnName) FROM tableName)

您可能希望在查询结果中加 1。 我不知道如何在 HSQLDB 中仅使用 SQL 来做到这一点。

也许你的意思是别的,你绝对应该编辑你的问题并提供更多细节。

【讨论】:

以上是关于如何在 HSQL DB 中创建具有最大行值的序列?的主要内容,如果未能解决你的问题,请参考以下文章

HSQL DB 中表名的最大大小是多少?

如何创建一个新的 pandas 列,该列是索引范围中每个值的列表,不包括行值

如何从熊猫的同一列中创建一个行值数组?

如何在 postgres 中创建表并插入具有动态值的数据

如何在 SQL 中创建具有以下条件的 DB2 存储过程?

如何使用scala数据框添加具有以下行值的新列[重复]