J'ai une table appelée produits avec 3 colonnes. Une des colonnes est produit_id. Cette colonne contient des ID du produit en double. D'une autre source, je reçois d'autres identifiants de produits. Je veux afficher le nombre d'identifiants de produit non existants. Par exemple, je reçois des ID de produit 12,13,14,15,16 d'une source. Dans mes produits, j'ai 12,13,14. Alors maintenant, je souhaite afficher le nombre d'identifiants de produit non existants. Dans ce cas, devrait être 2. Pour atteindre que j'ai essayé avec une requête inférieure.
SELECT COUNT(DISTINCT product_id)
FROM products p1
WHERE NOT EXISTS
(SELECT COUNT(DISTINCT product_id)
FROM products p2
WHERE p2.product_id IN (12,13,14,15,16) AND p1.product_id = p2.product_id)
4 Réponses :
Si la liste des produits provient d'une application et que vous connaissez également la longueur de la liste (dans ce cas 5), vous pouvez trouver le nombre de produits inexistants dans le tableau comme celui-ci:
SELECT COUNT(DISTINCT q.product_id) - COUNT(DISTINCT p.product_id) AS non_existent_products FROM (SELECT product_id FROM products2) q LEFT JOIN products p ON p.product_id = q.product_id
Vous pouvez utiliser quelque chose comme celui-ci ici, vous sélectionnez Product_ID distinct à partir du produit de table où les identifiants du produit ne sont pas égaux à 1 et 2, créant un alias pour le résultat que A. < / P> A fait des actes de table temporaire, vous devez donc utiliser A.Product_ID pour sélectionner. P> Désolé pour le mauvais anglais, mais j'espère que cela répond à la demande de questions. p> p>
Le problème que vous avez que votre sous-requête revient toujours une valeur (quelques fois le retourne 0) de sorte que lorsque vous n'existez pas () c'est toujours faux, car vous avez toujours une réponse.
Vous devriez changer n'existe pas par 0> comme celui-ci
Supposons, nous avons 2 tables ayant les valeurs suivantes: puis cette requête vous donne le nombre d'identifiant 1, 3 et 5 (non existant dans tandis que celui-ci vous donne le total des identifiants distincts non existants dans l'autre table p> voir Démo en direct P> P> Autres_Products < / code>) p>
En lisant votre question, il est tellement déroutant, pouvez-vous séparer dans une partie de sorte que tout puisse comprendre ce que vous êtes confronté et quel type d'aide vous aidez-vous
Faire les valeurs
(12,13,14,15,16) code> proviennent d'une application ou d'une autre table?Voulez-vous dire
... rejoindre ... Utilisez (produit_id) Où p2.product_id est null et ... code>?"Par exemple, je reçois des ID de produit 12,13,14,15,16 d'une source" i> quelle source? Vous avez codé sur celles-ci avec SQL.
Oui, je reçois ces identifiants de manière dynamique d'une autre table