J'ai un peu de puzzle SQL Distinct que je ne peux pas résoudre (ou du moins pas d'une manière très élégante).ordonné SQL Select columnwise distinct mais retour de toutes les colonnes
J'ai deux tables (essayez d'ignorer la simplicité de l'exemple). J'utilise MSSQL 2008 si cela fait beaucoup de différence.
Tableau: Catégorie
| categoryId (uniqueidentifier) PK |
| Name varchar(50) |
Tableau: Télécharger
| downloadId (uniqueidentifier) PK |
| categoryId (uniqueidentifier) FK |
| url (varchar(max)) |
| createdate (datetime) |
J'ai quelques catégories dans la table de catégorie et potentiellement beaucoup d'URL de téléchargement dans le tableau de téléchargement. Je suis intéressé à sélectionner le plus récent en utilisant l'URL de téléchargement créée (ou top 5 si cela est possible) pour chaque catégorie à partir du tableau de téléchargement.
Actuellement, je suis en train de faire ce qui suit, mais ce n'est pas très agréable, et peut difficilement être la bonne façon de le faire.
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
Toutes les suggestions seraient très appréciées.
montrent une entrée et sortie de l'échantillon ... vous obtiendrez rapidement une aide – CheeseConQueso
aussi, il semble que vous n'êtes même pas utiliser le tableau de la catégorie dans votre code ... Pourquoi avez-vous mis en ici? – CheeseConQueso