J'ai une table dans SQL Server ayant 4 colonnes: Je dois trouver des factures qui ont la même facture no, la date et l'AMT mais une pièce d'identité différente mais différente.
Je peuploie les résultats faisant de soi-même, mais on dirait que ce n'est pas le moyen optimisé d'aller chercher des résultats. P> Ma requête: p> select * from table t1 join
table t2 on t1.invoice = t2.invoice
where t1.invoice=t2.invoice and t1.amount=t2.amount and t1.date =t2.date and t1.id!=t2.id
4 Réponses :
Essayez ceci. Utilisation de la jointure gauche et filtrez ces nuls.
select * from (
select t1.invoiceno, t1.date, t1.amt, t1.id, t2.id as t2ID
from invoices t1
left join invoices t2 on t2.invoiceno = t1.invoiceno
and t2.date = t1.date
and t2.amt = t1.amt
and t2.id != t1.id) t3
where coalesce(t3.t2ID, 0) != 0
Vous pouvez utiliser des index pour accélérer la récupération des grandes bases de données. Utilisez une sous-requête mais n'utilisez pas une sous-requête juste pour afficher une colonne. P>
J'ai conseillé d'utiliser une sous-requête comme nouvelle table pour utiliser des jointures. Tout comme la première réponse. P>
Utilisation n'existe pas
Bonjour Zaynul, merci d'avoir répondu mais je ne reçois aucun enregistrement après avoir utilisé la requête de la question mentionnée
@ user9185088 Pourriez-vous partager les données de vos tables et la sortie attendue
@ user9185088 J'ai modifié ma requête et voici la démo dbfiddle.uk/...
doit trouver des factures qui ont la même facture no, la date et l'AMT mais un identifiant différent. P>
Utiliser
Existe code>: p>xxx pré> Cela affiche les factures correspondantes sur des lignes adjacentes. Pour la performance, vous voulez un index sur
(facture, date, montant, identifiant) code>. P>Si vous voulez juste des triplés où cela se produit, vous pouvez utiliser l'agrégation: P>
xxx pré> Remarque: S'il y a plus de deux doublures, cela ne montre que deux identifiants. P> blockQuote>
Hi @ user9185088, il n'est pas possible que vous utilisiez MySQL et QslServer, alors veuillez éditer cela dans vos balises de questions. Aussi, s'il vous plaît partager avec nous, dans votre question, la requête que vous avez déjà faite? Merci!
Avez-vous essayé
groupe par factorian, date, montant code>?Vous êtes la bienvenue que vous avez toujours SQL-Server et MySQL Tag?
Oui, j'ai essayé le groupe par mais en sortie, je n'ai besoin que de tous les enregistrements.
Mais, user9185088, nous ne savons toujours pas quelle base de données utilisez-vous? Est-ce Oracle, MySQL, SQLSERVER ou autre chose? Le code n'est pas le même pour ces bases de données.
La base de données est SQLServer
Pourriez-vous partager le script Créer du tableau d'exécution de la table et de la requête afin que nous puissions suggérer des suggestions plus réalistes.