我想知道是否有一种方法来获取行不是由表中的列排序(所以没有简单的选项来使用ORDER BY
或类似的东西。)我试过两个
SELECT *
FROM table
WHERE column IN ('A', 'B', 'C')
和
SELECT *
FROM table
WHERE column = 'A' OR column = 'B' OR column = 'C'
然后,我的C#应用程序中的SqlDataReader
按顺序显示行,如'C','A','B',它们(可能)按照数据库中写入的日期顺序显示。
我的意思不是字母顺序,而是每个变量本身在查询中显示的顺序。
作为SQL Server的初学者,我不容易详细搜索语法。另外,我在这里堆栈溢出很新,所以如果我犯了任何错误,请告诉我。如果你这样做,我将不胜感激
提前谢谢。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━<无线电通信/>
我的坏。给出的例子有点含糊不清。让我提供一个更清楚的。
SELECT *
FROM table
WHERE column IN ('r2', 'r4', 'r3', 'r1')
我希望我的SqlDataReader
对象首先读取'r2',然后选择'r4','r3'然后再读取'r1'。
应用程序通过使用循环查询每一行来执行此操作,我担心会损害性能。
答案 0 :(得分: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
答案 1 :(得分:2)
在大多数情况下,如果未指定“order by”子句,SQL Server将根据聚簇索引返回结果。因此,您可能需要检查表上的主键或聚簇索引。
另一种选择是你可以添加一个正在运行的序列号列&amp;把它作为主键。
答案 2 :(得分:0)
尝试:
SELECT *
FROM table
WHERE column IN ('A', 'B', 'C')
ORDER BY column DESC
用C,B,A命令获取它。