我設計的表將包含將隨時間而改變的一些對象的屬性。選擇不同類型的最新條目
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
)
比方說,我有這樣的對象類型: 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)
所以,你可以看到我有主席對象,它重量是1000,然後我將重量更改爲2000.並且我存儲了對象屬性的修改歷史記錄等內容。 現在我想從這個表格中爲每個對象選擇最新的數據。我知道如何通過一個爲每個對象選擇一個最新數據:
SELECT TOP 1 * FROM [ObjectProperties] WHERE ObjectType = 1 ORDER BY Id DESC
但如果我要選擇一個查詢幾個對象是什麼?像
SELECT ... * FROM [ObjectProperties] WHERE ObjectType IN (1, 2) ...
和接收IDS 2和第3行(因爲3對主席比1更新的屬性)
所以,這種方式是選擇比簡單的快選擇? – bobby
排名函數非常有效,但是 - 更重要的是 - 它們比具有GROUP BY的子選擇更具可讀性和可維護性。順便說一句,感謝100k Reps :) –