時間の経過とともに変化するいくつかのオブジェクトのプロパティを含むテーブルを設計しています。
CREATE TABLE [dbo].[ObjectProperties]
(
[Id] INT NOT NULL PRIMARY KEY IDENTITY,
[ObjectType] SMALLINT NOT NULL,
[Width] SMALLINT NOT NULL,
[Height] SMALLINT NOT NULL,
[Weight] SMALLINT NOT NULL
)
この ObjectTypes があるとしましょう: 1 = 椅子 2 = テーブル
このテーブルのデータ:
INSERT INTO [dbo].[ObjectProperties] ([Id], [ObjectType], [Width], [Height], [Weight]) VALUES (1, 1, 50, 50, 1000)
INSERT INTO [dbo].[ObjectProperties] ([Id], [ObjectType], [Width], [Height], [Weight]) VALUES (2, 2, 80, 40, 500)
INSERT INTO [dbo].[ObjectProperties] ([Id], [ObjectType], [Width], [Height], [Weight]) VALUES (3, 1, 50, 50, 2000)
ご覧のとおり、Weight が 1000 の Chair オブジェクトがあったので、Weight を 2000 に変更しました。オブジェクト プロパティの変更履歴のようなものを保存しています。ここで、オブジェクトごとにこのテーブルから最新のデータを選択したいと考えています。各オブジェクトの最新データを 1 つずつ選択する方法を知っています。
SELECT TOP 1 * FROM [ObjectProperties] WHERE ObjectType = 1 ORDER BY Id DESC
しかし、1 回のクエリで少数のオブジェクトを選択したい場合はどうすればよいでしょうか? お気に入り
SELECT ... * FROM [ObjectProperties] WHERE ObjectType IN (1, 2) ...
ID が 2 と 3 の行を受け取ります (3 には 1 よりも椅子の新しいプロパティがあるため)