Suppression des doublons d'une requête SQL (pas seulement "use distinct")
Il est probablement plus simple, voici ma requête:
SELECT DISTINCT U.NAME, P.PIC_ID
FROM USERS U, PICTURES P, POSTINGS P1
WHERE U.EMAIL_ID = P1.EMAIL_ID AND P1.PIC_ID = P.PIC_ID AND P.CAPTION LIKE '%car%';
mais cela ne fera que supprimer les doublons lorsqu'une ligne a la fois de la même u.nom et p.pic_id. Je veux donc, si il ya tous les doublons de noms, il laisse les autres lignes. C'est une drôle de requête, mais en général, comment puis-je appliquer l'distinctes en une seule colonne de la clause SELECT?
source d'informationauteur Dave
Vous devez vous connecter pour publier un commentaire.
Arbitrairement choisir de garder le minimum PIC_ID. Aussi, évitez d'utiliser l'implicite de la syntaxe de jointure.
Votre question est un peu déroutant; voulez-vous afficher qu'une seule ligne par l'utilisateur, ou voulez-vous montrer une ligne par image mais de supprimer les doublons dans l'U. NOM de domaine? Je pense que vous voulez à la seconde; si il n'y a pas beaucoup de réponses pour le premier.
Affichage de répéter des valeurs est logique d'affichage, qui SQL n'était pas vraiment conçu pour. Vous pouvez utiliser un curseur dans une boucle pour traiter les résultats ligne par ligne, mais vous allez perdre beaucoup de performance. Si vous avez un "smart" frontend " de la langue comme un .NET de langue ou de Java, quelle que soit la construction, vous mettre ces données peuvent être bon marché manipulé pour supprimer les doublons avant finalement de les afficher dans l'INTERFACE utilisateur.
Si vous utilisez Microsoft SQL Server, et la transformation doit être fait à la couche de données, vous pouvez envisager d'utiliser un CTE (Tableau Calculé Expression) pour contenir la requête initiale, puis sélectionnez les valeurs de chaque ligne de la CTE, selon que les colonnes de la rangée précédente tenir les mêmes données. Il sera plus performant que le curseur, mais ça va être un peu salissant. Observer:
L'exemple ci-dessus est TSQL, il n'est pas garanti dans tous les autres DBPL comme PL/SQL, mais je pense que la plupart de l'entreprise au niveau de SQL moteurs ont quelque chose de similaire.
Vous devez dire à la requête de la valeur à choisir pour les autres colonnes,
MIN
ouMAX
semblent des choix appropriés.Si je vous comprends bien, vous voulez la liste d'exclure les doublons sur une seule colonne, jointure interne à un sous-sélectionnez
Si je vous comprends bien, vous voulez une liste de toutes les images avec le même nom (et leurs différents ids) de telle sorte que leur nom apparaît plusieurs fois dans le tableau. Je pense que cela fera l'affaire:
Je n'ai pas été exécuté, il peut donc y avoir une erreur de syntaxe ou deux.