Sélectionnez la valeur du tableau seulement s'il existe dans un autre
J'ai deux tables.
Table:
ID COLOR
1 white
2 red
3 black
4 blue
5 yellow
Table deux:
ID COLOR
1 white
2 white
3 red
4 black
Sortie doit être:
1 white
2 red
3 black
(à l'exclusion de 2 valeurs qui n'existent pas dans la seconde table - bleu et jaune + exclure deuxième blanc).
J'ai essayé différentes REJOINDRE et EXISTENT requêtes, pas de chance. Merci.
- Deux tables de même nom. N'est-il pas grave violation de la DB bases?
- jointure interne permettra de résoudre votre problème.
- J'ai simplifié mon code. Première table contient toutes les catégories (ID, Chat), la deuxième les postes à attribuer des catégories (ID, Titre, ...... Chat). Je veux de sortie (dans la boucle) que les catégories qui ont des postes et ne sont pas vides.
- ce commentaire n'a aucun sens dans le contexte de cette question.
- Tant pis, cela fonctionne, merci 🙂
Vous devez vous connecter pour publier un commentaire.
where exists
est approprié pour cela.démo ici
La sous-requête est une sous-requête corrélée (car il fait référence à une valeur à partir d'une autre requête), et en tant que tel, il est exécuté pour chaque ligne de la requête externe. Donc tous la requête interne doit faire, c'est vérifier et voir si la couleur de la requête externe (et premier tableau) est présent dans le deuxième tableau.
left join
au lieu deinner join
. pour plus d'infos, essayez de lui poser une questionJuste une autre façon d'obtenir la même chose que @pala_
where exists
version d'habitude. comparer le plan d'expliquer iciexists
version devrait être plus efficace. Il n'a pas deselect distinct
.