【发布时间】:2020-08-07 06:59:04
【问题描述】:
有没有办法只返回一条记录,以便我可以通过下面的代码获取所有列调用?
using (var reader = await command.ExecuteReaderAsync(CommandBehavior.SequentialAccess).ConfigureAwait(false))
{
DataTable dtResults = new DataTable();
dtResults.Load(reader);
return dtResults;
}
所以现在这将返回查询中的所有 X 条记录,我只需要返回 1 条记录,这样我就可以将列数据类型等插入到我的 Grid 控件中。
我们不能只添加SELECT Top 1,因为某些查询以 CTE 等开头。
我们不能将它包裹在另一个查询中,因为有时该查询有 Order Bys
我们不能强迫用户添加一个单独的查询来模仿我们想要做的事情。
这是错误:
消息 1033,第 15 级,状态 1,第 40 行
ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效,除非还指定了 TOP、OFFSET 或 FOR XML。
这里是查询:
SELECT TOP 1 *
FROM
(SELECT O.Department, O.ID
FROM dbo.table1 e
LEFT JOIN dbo.table2 O ON e.Department = O.Department
ORDER BY ID) x
【问题讨论】:
-
只运行一次
reader.Read,不要将其加载到DataTable。
标签: c# sql sql-server tsql sql-order-by