我有一點SQL獨特的難題,我無法解決(或至少不是以非常優雅的方式)。已排序SQL選擇列式不同,但返回所有列
我有兩個表(儘量忽略示例的簡單性)。我使用MSSQL 2008,如果這有很大的不同。
表:類別
| categoryId (uniqueidentifier) PK |
| Name varchar(50) |
表:下載
| downloadId (uniqueidentifier) PK |
| categoryId (uniqueidentifier) FK |
| url (varchar(max)) |
| createdate (datetime) |
我有幾個類別的分類表,並有可能在下載表格很多下載網址。我有興趣從下載表中選擇使用創建的最新版本(或前5個,如果可能的話)下載每個類別的網址。
目前我正在做以下工作,但這不是很好,也很難成爲正確的方法。
SELECT
categoryId,
max(convert(BINARY(16),downloadId)) as downloadId,
max(createdate) as createdate
INTO tmp
FROM Download
GROUP BY categoryId
ORDER BY createdate
SELECT url
FROM Download
WHERE downloadId IN
(SELECT CONVERT(uniqueidentifier, downloadId) FROM tmp)
DROP Table tmp
任何建議將不勝感激。
顯示了一些輸入輸出...你會得到更快的幫助 – CheeseConQueso 2010-01-12 20:44:24
也,它看起來像你甚至沒有使用你的代碼類別表...爲什麼你把它放在這裏? – CheeseConQueso 2010-01-12 20:46:03