Dans SQL Server, comment puis-je sélectionner uniquement le premier enregistrement d'une table contenant plusieurs enregistrements pour chaque échantillons de données: p> CustomerID code>? 123 | Emiliano | emilaino@gmail.com | null
110 | Pippo | pippo@gmail.com | 3232312
4 Réponses :
Si vous avez une colonne d'identité qui spécifie la commande, vous pouvez obtenir le "premier" enregistrement pour chaque clientIide à l'aide d'une sous-requête corrélée:
select t.* from t where t.id = (select min(t2.id) from t t2 where t2.customerid = t.customerid);
Oui, j'ai une colonne d'identité et votre solution fonctionne correctement.Merci beaucoup
@Developeremiliano sa normale quand "Accepter" une réponse en cliquant sur la coche du côté s'il s'adresse à votre problème. Et envisager de pervoir des réponses utiles. C'est comment le site fonctionne.
La requête ci-dessous vous permettra de sélectionner tous les enregistrements de CustomerID
SELECT * FROM tableName WHERE CustomerID = 1
Cela devrait faire.
select top (1) * from [tablename] where CustomerID = @customerID
S'il vous plaît voir ci-dessous la requête. Vous pouvez utiliser sur code> dans sql pour cela. select *
from (
select *
, row_number() over (partition by CustomerID order by CustomerID) as Rownum
from table
) t
where t.CustomerID = yourcustomerid and t.Rownum = 1;
Veuillez fournir des exemples de données, des résultats souhaités et une balise de base de données. Il n'existe pas de "le premier enregistrement" parce que les tables SQL représentent Set d'un commandé i>. La commande n'est fournie que explicitement via une colonne.
En plus de ce que @gordonlinoff a dit, recherchez-vous un seul enregistrement sur la table, ou «premier» enregistrement pour chaque
CustomerID code>? Comment définissez-vous "d'abord"?Je trouve que cette question est claire et plusieurs autres personnes ont tenté de répondre. Je ne comprends pas non plus pourquoi il a été évolué ni pourquoi il a été fermé. (La question pourrait i> être améliorée, mais c'est une question différente.)