Je veux sélectionner tous les order_ids distincts de ma table et trier cette liste par colonne de date. L'utilisation de DISTINCT est bien sûr un paramètre à l'échelle de la requête, donc essayer quelque chose comme ceci ne fonctionne pas :
SELECT DISTINCT(orderId, datetime)
FROM table
ORDER BY datetime DESC
Cela renvoie toutes les combinaisons DISTINCT de orderId et de datetime, il me reste donc plusieurs orderId, ce que je ne veux pas. Par conséquent, je pense que la clause DISTINCT n'est pas la voie à suivre. Est-ce que n'importe qui a des suggestions sur la façon dont je pourrais résoudre ce problème ?
Merci!
3 réponses
S'il y a plusieurs lignes pour la commande, quelle date voulez-vous afficher ? peut-être:
SELECT [orderId], MAX([datetime])
FROM [table]
GROUP BY [orderId]
ORDER BY MAX([datetime]) DESC
Peut-être qu'un CTE aiderait :
WITH CTE
AS
(
SELECT orderId FROM table ORDER BY datetime DESC
)
SELECT DISTINCT orderId FROM CTE
SELECT DISTINCT * FROM
(SELECT value1
FROM table1
ORDER BY value2);
Cela a fonctionné pour moi.
ORDER BY
de la table dérivée, ce qu'elle fera effectivement lorsque DISTINCT
est implémenté à l'aide du hachage, par ex. dans une requête plus complexe. Votre implémentation concrète d'optimiseur de base de données peut avoir accidentellement produit le résultat souhaité, mais vous ne devez pas vous y fier !
Questions connexes
De nouvelles questions
sql
Le langage de requête structuré (SQL) est un langage permettant d'interroger des bases de données. Les questions doivent inclure des exemples de code, une structure de table, des exemples de données et une balise pour l'implémentation du SGBD (par exemple MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2, etc.) utilisés. Si votre question concerne uniquement un SGBD spécifique (utilise des extensions / fonctionnalités spécifiques), utilisez plutôt la balise de ce SGBD. Les réponses aux questions marquées avec SQL doivent utiliser le standard SQL ISO / IEC.