J'ai une requête où je veux récupérer des lignes child2
distinctes, mais ordonnées par une propriété de child1
lignes qui sont liées par un parent commun. Si je fais ce qui suit, je reçois une erreur car la ORDERBY
propriété est pas dans la liste DISTINCT
:SQL: Sélectionnez les enfants distincts classés par propriété de l'enfant apparenté
select
distinct c2.Id, c2.Foo, c2.Bar
from Child1 c1
join Parent p on c1.parentId = p.Id
join Child2 c2 on c2.parentId = p.Id
order by c1.Id
Cependant, si j'ajoute c1.Id
à la liste de sélection, je vais perdre la netteté de Child
lignes, comme c1.Id
marques tous sont distincts.
Si j'utilise un CTE ou une sous-requête pour effectuer la commande, puis sélectionner des lignes distinctes, la requête externe ne garantit pas le maintien de l'ordre de la requête interne/cte.
Existe-t-il un moyen d'y parvenir?
Pouvez-vous fournir votre structure de table s'il vous plaît? – jimmy8ball
Donc si vous avez deux lignes avec le même 'c.foo' i' c.bar' et différent 'p.createdate', lequel des deux' createate' voulez-vous utiliser? –
@Nenad il y aurait la clé primaire de l'enfant aussi, je vais l'ajouter à l'exemple – GoatInTheMachine