【发布时间】:2022-01-19 22:56:43
【问题描述】:
当值超过某个点时,我必须从数据库中返回行。
我应该得到足够多的行来总结一个大于我的数量的值并停止检索行。
这可能吗?它有意义吗? 这可以转移到 LINQ for EF core 中吗?
我目前遇到了返回所有行的查询...
SELECT [i].[InventoryArticleId], [i].[ArticleId], [i].[ArticleQuantity], [i].[InventoryId]
FROM [InventoryArticle] AS [i]
INNER JOIN [Article] AS [a] ON [i].[ArticleId] = [a].[ArticleId]
WHERE (([i].[ArticleId] = 1) AND ([a].[ArticlePrice] <= 1500))
AND ((
SELECT COALESCE(SUM([i0].[ArticleQuantity]), 0)
FROM [InventoryArticle] AS [i0]
INNER JOIN [Article] AS [a0] ON [i0].[ArticleId] = [a0].[ArticleId]
WHERE ([i0].[ArticleId] = 1) AND ([a0].[ArticlePrice] < 1500)) > 10)
【问题讨论】:
-
没有什么比样本数据和预期结果更能说明问题了。请阅读How to ask和Minimal, Reproducible Example
-
Aside -
[delimiters]只需要用于保留字或特殊字符,将它们用于everything只会增加噪音并使查询不可读;您的查询中没有任何内容需要分隔。 -
查询是EF核心生成的,我没有写,我只是切换值进行测试。我不太擅长 SQL。感谢您的提示...
-
查询是由 EF 核心生成的 - 好吧,有道理!它看起来非常无用,并且不必要地两次点击相同的表,这不是必需的,完全忽略并清楚地定义示例数据和所需的结果和逻辑可能更好。
-
步骤:创建一个子查询,按分区(文章 ID?)保持数量的运行总和,然后使用外部查询查找 TOP 1 记录 > 按您的 runningtotal 升序排序的所需数量。至于如何获得运行总数:stackoverflow.com/questions/860966/… 现在您可以在视图或过程中执行此操作,并让用户传递所需的文章/数量以使其更容易...
标签: sql sql-server database