1

 我想知道是否有一种方法可以让行不按表中的列排序(所以没有简单的选项可以使用ORDER BY或类似的东西)。
 我都试过了

SELECT *
FROM table
WHERE column IN ('A', 'B', 'C')

 和

SELECT *
FROM table
WHERE column = 'A' OR column = 'B' OR column = 'C'

 然后,SqlDataReader在我的 C# 应用程序中按顺序显示行,如“C”、“A”、“B”(可能)按写入数据库的日期顺序排列。
 我的意思不是按字母顺序,而是每个变量本身在查询中显示的顺序。

  作为 SQL Server 的初学者,详细搜索语法并不容易。另外,我在这里是堆栈溢出的新手,所以如果我犯了任何错误,请告诉我。如果你这样做,我将不胜感激。
  先感谢您。

-----------------------------------------------------

 我的错。给定的例子有点模棱两可。让我提供一个更清晰的。

SELECT *
FROM table
WHERE column IN ('r2', 'r4', 'r3', 'r1')

 我希望我的SqlDataReader对象首先读取'r2',然后读取'r4',然后读取'r3'然后读取'r1'。
 该应用程序过去常常通过使用循环查询每一行来做到这一点,我担心这会损害性能。

4

3 回答 3

3
SELECT *
FROM table
WHERE (...expression...)
order by
case
when column='r2' then 1
when column='r4' then 2
when column='r3' then 3
when column='r1' then 4
else 9 end,column
于 2013-06-14T05:09:14.600 回答
2

在大多数情况下,如果没有指定“order by”子句,SQL Server 将根据聚集索引返回结果。因此,您可能需要检查表上的主键或聚集索引。

另一种选择是您可以添加一个正在运行的序列号列并使其成为主键。

于 2013-06-14T03:28:00.067 回答
0

Try:

SELECT *
FROM table
WHERE column IN ('A', 'B', 'C')
ORDER BY column DESC

To get it in C, B, A order.

于 2013-06-14T03:19:04.890 回答