J'ai 2 tables dans ma base de données.
Tableau 1
-------------------------------------------------------------------------
| name | family | phone | email | gender | phone2 | address | birthdate |
-------------------------------------------------------------------------
Tableau 2
-----------------------------------------
| gender | address | phone | birthdate |
-----------------------------------------
dans le tableau # 1, l' adresse des colonnes et phone2 est vide et les valeurs de sexe et de date de naissance des colonnes sont les mêmes que dans le tableau # 2.
Comment puis-je lire les données du tableau n ° 2 et mettre à jour l' adresse et le téléphone 2 dans le tableau n ° 1 avec les valeurs des colonnes de l' adresse et du téléphone du tableau n ° 2 lorsque le sexe et la date de naissance sont les mêmes dans chaque ligne?
par exemple: voici quelques données du tableau n ° 1
-------------------------------------------------------------------------
| name | family | phone | email | gender | phone2 | address | birthdate |
-------------------------------------------------------------------------
| john | doe | 12345| t@t.com| Male | | | 1980-01-01|
-------------------------------------------------------------------------
| mike | clark | 65432| x@y.com| Male | | | 1990-01-01|
-------------------------------------------------------------------------
| Sara | King | 875465| a@b.com|Female| | | 1970-01-01|
-------------------------------------------------------------------------
et voici quelques données dans le tableau # 2
-----------------------------------------
| gender | address | phone | birthdate |
-----------------------------------------
| Male | 1704test|0457852|1980-01-01 |
-----------------------------------------
| Female | 1705abcs|0986532|1970-01-01 |
-----------------------------------------
| Male | 1602cyzd|0326589|1990-01-01 |
-----------------------------------------
Je veux mettre à jour le tableau # 1 avec les données du tableau # 2 et vérifier le sexe et la date de naissance et rendre le tableau # 1 comme
-------------------------------------------------------------------------
| name | family | phone | email | gender | phone2 | address | birthdate |
-------------------------------------------------------------------------
| john | doe | 12345| t@t.com| Male |0457852 |1704test | 1980-01-01|
-------------------------------------------------------------------------
| mike | clark | 65432| x@y.com| Male |0326589 |1602cyzd| 1990-01-01|
-------------------------------------------------------------------------
| Sara | King | 875465| a@b.com|Female |0986532 |1705abcs| 1970-01-01|
-------------------------------------------------------------------------
Comment puis-je faire ceci?
la source
UNIQUE
contraintetable2 (gender, birthdate)
, vous devez ajouter cette information dans la question.Réponses:
Il existe plusieurs façons d'obtenir les résultats souhaités.
Méthodes non déterministes
(dans le cas où de nombreuses lignes du tableau 2 correspondent à une dans le tableau 1)
Ou une forme un peu plus concise
Ou avec un CTE
Méthodes déterministes
MERGE
lancerait une erreur plutôt que d'accepter des résultats non déterministesOu vous pouvez choisir un enregistrement spécifique s'il y a plus d'une correspondance
Avec
APPLY
.. Ou un CTE
la source
tgt_address
ettgt_phone
sont des alias pour les colonnes#Table1
- c'est donc la cible de la mise à jour.la source