在其中一个 SortID 发生更改(例如从 444 更改为 444.1)之后,我需要使用 SQL-92 重新分配所有 SortID,从 1 开始,直到 Beleg 表的记录子集的 MAX (SortID)。我尝试了多种方法(例如 SET @a:=0; UPDATE table SET field=@a:=@a+1 WHEREwhatever='whatever' ORDER BY field2),但它不起作用,因为这些解决方案都需要一种特殊的 SQL,如 SQLServer 或 Oracle 等。
我使用的 SQL 是 SQL-92,在 FileMaker 中实现(尽管可以使用 INSERT 和 UPDATE,但没什么花哨的)。
感谢您的任何提示!
Gary
据我所知,SQL-92 是一种标准,而不是一种语言。因此,您可以说您正在使用 T-SQL,它主要符合 SQL-92,但您不能说我使用 SQL-92 对 SQL Server 进行编程。这同样适用于 FileMaker。
我想您正在尝试通过 ODBC 更新您的表? Update 语句看起来不错,但如果 FileMaker SQL 没有变量(我不确定在查询中使用变量是否会给出您期望的结果,我认为您会将每行中的 SortId 设置为 1)。您正在考虑在 TSQL 中使用 row() 执行类似窗口函数的操作,但我认为此功能不可用。
最简单的解决方案是使用 FileMaker,重置列的编号实际上是一项简单的任务,只需几秒钟。您需要这方面的帮助吗?
Edit:
我指的是TSQL函数rank()和row_number(),TSQL中没有row()函数
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)