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

2

ほとんどの場合、"order by" 句が指定されていない場合、SQL Server はクラスター化インデックスに基づいて結果を返します。そのため、テーブルの主キーまたはクラスター化インデックスを確認することをお勧めします。

別のオプションは、実行中のシーケンス番号列を追加して、それを主キーにすることです。

于 2013-06-14T03:28:00.067 に答える
0

試す:

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

C、B、Aの順番で取得します。

于 2013-06-14T03:19:04.890 に答える