3

SQL Server 2012に、ソフトウェアのさまざまなバージョンのパッチノートを含むテーブルがあります。テーブルは次のようになります。

VersionID int PrimaryKey Identity
Major tinyint
Minor tinyint
Revision tinyint
Patchnotes nvarchar(MAX)

メジャー、マイナー、リビジョンに基づいて最新バージョンの行を取得する必要があります。たとえば、バージョン1.1.4は、バージョン1.1.3の後、バージョン1.2.1より前にあります。

これを行うためにTSQLでクエリを作成する方法について誰かがアイデアを持っていますか?クエリ全体を完了せずに、正しい方向に私をプッシュしていただければ幸いです。学ぼうとしています!

4

3 に答える 3

4

2012バージョンは、標準OFFSET / FETCH構文を実装しています(以前のバージョンでは、独自仕様を使用する必要がありますTOP)。

SELECT *
FROM Version
ORDER BY Major DESC, Minor  DESC, Revision  DESC 
  OFFSET 0 ROWS
  FETCH FIRST 1 ROW ONLY ;
于 2012-07-06T22:24:09.853 に答える
4

3 つのフィールドを降順に並べてから、1 つのレコードを取得します。

SELECT TOP 1 VersionID, Major, Minor, Revision, Patchnotes
FROM VERSIONS
ORDER BY Major DESC, Minor  DESC, Revision  DESC

複数のソート列を指定できます。ORDER BY句内の並べ替え列の順序によって、並べ替えられた結果セットの編成が定義されます。結果セットは最初の列で並べ替えられ、次にその順序付きリストが 2 番目の列で並べ替えられます。

于 2012-07-06T22:13:08.547 に答える
-1
SELECT TOP 1 * FROM MyTable
WHERE Major<=@MAJOR AND Minor<=@MINOR AND Revision<@REVISION
ORDER BY Major DESC, Minor DESC, Revision DESC
于 2012-07-06T22:14:22.557 に答える