【发布时间】:2021-12-07 19:49:08
【问题描述】:
我正在尝试填充表格。
这是代码
WITH cte_Filters AS
(
SELECT *
FROM (
VALUES (NEXT VALUE FOR dbo.AutoIncrementNumberSequence, 1, 5),
(NEXT VALUE FOR dbo.AutoIncrementNumberSequence, 8, 2),
(NEXT VALUE FOR dbo.AutoIncrementNumberSequence, 3, 1),
(NEXT VALUE FOR dbo.AutoIncrementNumberSequence, 5, 7),
(NEXT VALUE FOR dbo.AutoIncrementNumberSequence, 6, 5)
) q1 (ID, ProductID, TagID)
)
--insert into dbo.Filters(FilterID, ProductID, TagID)
SELECT s.*
FROM cte_Filters AS s
LEFT JOIN dbo.Filters AS d ON s.ID = d.FilterID
WHERE d.FilterId IS NULL;
我收到此错误:
第 22 行:NEXT VALUE FOR 函数不允许在检查约束、默认对象、计算列、视图、用户定义函数、用户定义聚合、用户定义表类型、子查询、公用表表达式、派生表或返回语句。
我知道这是因为我在子查询中使用了 NEXT VALUE FOR 但我不知道如何以超出子查询的方式重建它。任何帮助将不胜感激!
【问题讨论】:
-
您想通过查询实现什么目标?假设你没有重置你的序列,这个条件 (
LEFT JOIN dbo.Filters AS d ON s.ID = d.FilterID) 怎么可能匹配?
标签: sql-server sequence populate