Je dois sélectionner uniquement la première ligne d'une requête qui joint les tables A et B. La table B existe plusieurs enregistrements de même nom. Il n'y a pas d'identifiants dans les deux tables. Je ne peux pas changer le schéma non plus parce que je ne possède pas la base de données.Sélectionnez la première ligne dans une jointure de deux tables dans une instruction
TABLE A
NAME
TABLE B
NAME
DATA1
DATA2
Select Distinct A.NAME,B.DATA1,B.DATA2
From A
Inner Join B on A.NAME = B.NAME
Cela me donne
NAME DATA1 DATA2
sameName 1 2
sameName 1 3
otherName 5 7
otherName 8 9
mais je dois récupérer une seule ligne par nom
NAME DATA1 DATA2
sameName 1 2
otherName 5 7
j'ai pu le faire en ajoutant le résultat dans une table temporaire avec un colonne d'identité, puis sélectionnez l'ID minimum par nom.
Le problème ici est que j'ai besoin de le faire en une seule instruction.
Il y a une petite faute de frappe sur la dernière déclaration. Il devrait être "IS NOT NULL" au lieu de "IN NOT NULL". – mbp
+1 vous êtes un sauveur. Votre auto-jointure modifiée fonctionne même avec SQL CE où d'autres solutions pour cette question ne sont pas dues aux limitations de SQL CE. –