J'ai deux tables comme les suivantes:
paramètres1 strong> p> paramètre2 strong> p> XXX PRE> Je rejoint habituellement la série de résultats de ces deux tables avec un syndicat de cette manière: p> et je reçois ce jeu de résultats: Je veux limiter la vérification duplication syndicale uniquement à la colonne code> COD COD>, donc je veux éviter que la cod est dupliquée dans Le jeu de résultats (lorsqu'il y a un enregistrement avec un nom différent et la même morue), je souhaite obtenir le nom de la première table ( paramètres1 strud>) em>: p> +------+-----+
| cod | des |
+------+-----+
| 1 | mmm | ---> FROM parameters2
| 2 | bbb |
| 3 | ccc |
3 Réponses :
la solution dans Ce lien doit être adaptable à ces environnements , comme il est standard SQL (vous pouvez utiliser Dans votre cas, la solution finira par ressembler à: P> isnull code> si
coalesce code> n'est pas disponible). Je ne suis pas sûr de savoir quelle est la disponibilité de
Inscription extérieure complète code> est, mais elle doit également être disponible sur les trois plateformes également.
SELECT p1.cod, ISNULL(p1.des, p2.des) AS des
FROM parameters1 p1
LEFT JOIN parameters2 p2 ON p1.cod = p2.cod
UNION ALL
SELECT p2.cod, p2.des
FROM parameters2 p2
LEFT JOIN parameters1 p1 ON p1.cod = p2.cod
WHERE p1.cod IS NULL
La solution ne couvre pas les cas où un paramètre ne vit que dans la deuxième table, c'est-à-dire que le résultat sera toujours identique à un simple choix de la première table.
Cela ne fonctionne pas car si je supprimais le record des paramètres 1, je ne reçois rien ... Voir la question mise à jour, et désolé de ne pas être très précise dans la question.
Tirer. Avez-vous les deux laissés code> et
rejoindre code> support dans mysql?
Modifier la deuxième requête de l'Union pour obtenir uniquement des paramètres2 où les paramètres2.ID ne sont pas dans Paramètres1. P>
SELECT cod, des FROM parameters1 p1 UNION ALL SELECT cod, des FROM parameters2 p2 WHERE NOT EXISTS ( SELECT 1 FROM parameters1 p1sub WHERE p1sub.cod = p2.cod )
Solution fantastique, merci!
@YPERCUBE Très bon point, pas besoin d'essayer de filtrer les doublons ici ... Mise à jour.
Dupliqué possible de SQL Server Union distincte pour une colonne
Veuillez expliquer la logique de la raison pour laquelle la ligne
(1, 'aaa') code> est choisi sur la ligne
(1, 'mmm') code> par exemple. parce que
'aaa' <'mmm' code> peut-être? La réponse acceptée semble choisir une rangée arbitraire.
C'est logique que j'ai défini parce qu'une table a la priorité ...