2

在编写 C# 程序时,我试图从 SQL 数据库中进行批量检索,而不是一次获取每条记录。这样我就可以在一个 DataSet 中获取所有记录,并且只需访问服务器一次。我发现这种方法可以明显更快。但是我需要维持秩序。有谁知道如何做到这一点?

SELECT [UserID], [LastName], [FirstName]
FROM [users]
WHERE [UserID] = '2024443' OR [UserID] = '2205659' OR [UserID] = '2025493';

编辑:

我需要获取以这种方式排序的数据:

2024443
2205659
2025493
4

3 回答 3

5

要运行的适当查询是:

SELECT [UserID], [LastName], [FirstName]
FROM [users]
WHERE [UserID] IN ('2024443', '2205659', '2025493')
ORDER BY [UserID]

前提是您希望在[UserID]列的结果中保持顺序。

在对 OP 正在寻找的一个非常奇怪的订单进行澄清后进行编辑:

因此,预期的输出将按以下顺序包含选定的行:

'2024443'
'2205659'
'2025493'

因此ORDER BY,将作为字符字段排序的简单是不够的。您应该澄清它是什么顺序,因为显然您只想根据这 3 行进行排序(例如:您还没有澄清您想要数字的位置2100000并且它是不可预测的)。

对于这种排序,您可以选择一个仅适用于这些行的糟糕解决方案,但正如我之前所说,这就是您提供的全部内容。所以你可以做这样的事情:

SELECT [UserID], [LastName], [FirstName]
FROM [users]
WHERE [UserID] IN ('2024443', '2205659', '2025493')
ORDER BY
    CASE [UserID]
        WHEN '2024443' THEN 0
        WHEN '2205659' THEN 1
        ELSE 2
    END

您应该能够使用该自定义排序构建其余查询。只需将此作为模板。

于 2013-10-07T20:10:04.887 回答
0

ORDER BY 不起作用吗?

SELECT [UserID]
  ,[LastName]
  ,[FirstName]
FROM [users]
WHERE [UserID] = '2024443' OR [UserID] = '2205659' OR [UserID] = '2025493'
ORDER BY [UserID];

这将返回您请求的记录,按 UserID 排序。

于 2013-10-07T20:09:09.520 回答
0

如果我理解正确,您正在查看以特定批量大小批量检索记录。在这种情况下,您可以根据主键列索引或行号检索下一组记录。

于 2013-10-07T20:12:47.630 回答