【问题标题】:Getting Results from Sql Section by Section逐节从 Sql 中获取结果
【发布时间】:2014-11-12 14:29:48
【问题描述】:

我有一个问题。有没有办法从 sql 中获取结果集(例如:数据表中有 15 行)部分(例如:我想显示结果 5,所以如果我的数据表中有 15 行,我必须有 3 部分)。我为什么要这样做?因为我有一个 groupbox,它有 5 个 Richtextbox。当我用 for 循环划分结果集时,我必须有三个部分。当我点击它们时,我将在组框中放置一个下一步按钮,richtextboxes 将被清除,结果集的第二部分(6、7、8、9、10)将分别出现在richtextboxes 中。我在 C# 中等待你的解决方案

【问题讨论】:

  • 为什么不将查询结果存储在 DataTable 中并从那里开始呢?查询过于复杂,无需查询服务器 3 次。
  • 不知道我理解的对不对,你的意思是这样的吗? select (ROW_NUMBER() OVER (ORDER BY ID) - 1) / 5 AS Section FROM MyTable
  • 是这样的。我有一个这样的 sql 查询,我将获取结果: select ID,SahisSoruBaslik from [Ifade.SahisSoru] where SorusturmaNumarasi='"+DGV.CurrentRow.Cells[0].Value.ToString()+"' ORDER BY ID。你能用你的查询安排我这个查询吗?

标签: c# sql-server resultset sections


【解决方案1】:

如果您使用的是 SQL Server 2012,您可以尝试在 T-SQL 中使用 offset 关键字。

例如

SELECT First Name + ' ' + Last Name FROM Employees ORDER BY First Name OFFSET 10 ROWS FETCH NEXT 5 ROWS ONLY;

您也可以将行数和偏移行数作为参数传递。

对于 SQL Server 2008,您可以尝试使用行号:

SELECT some_field
FROM   (
          SELECT some_field, ROW_NUMBER() OVER (ORDER BY some_id) AS rownum
          FROM   table
       ) AS t
WHERE  t.rownum BETWEEN 11 AND 20

【讨论】:

  • 我没有使用 sql server 2008,但我有一个问题,如果使用 OFFSET,我如何获取结果集,我必须将 where 子句放在 sql word 中。你能告诉我吗?
  • @HasanYaman 我不确定“SQL Word”是什么意思?在 Offset 的情况下,您不需要任何额外的 where 子句(当然,您的基本数据集所需的过滤器除外)。
  • 对不起卡西姆。通常我使用这样的sql查询;从 [Ifade.SahisSoru] 中选择 ID,SahisSoruBaslik,其中 SorusturmaNumarasi='"+DGV.CurrentRow.Cells[0].Value.ToString()+"' 按 ID 排序。我无法理解您的查询
【解决方案2】:

您可以使用 jquery Data table 轻松完成此操作

http://www.datatables.net/.这里你可以随意设置参数。

【讨论】:

  • 这就像我不想做的数据表。因为我使用richtextbox(用于jquerys中每一行的DGV或DataTable)
猜你喜欢
  • 2017-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-18
  • 1970-01-01
相关资源
最近更新 更多