Ich habe 2 Tabellen in meiner Datenbank.
Tabelle 1
-------------------------------------------------------------------------
| name | family | phone | email | gender | phone2 | address | birthdate |
-------------------------------------------------------------------------
Tabelle 2
-----------------------------------------
| gender | address | phone | birthdate |
-----------------------------------------
In Tabelle 1 sind die Spalten Adresse und Telefon2 leer und die Spalten Geschlecht und Geburtsdatum entsprechen denen in Tabelle 2.
Wie kann ich Daten aus Tabelle 2 lesen und Adresse und Telefon 2 in Tabelle 1 mit Werten aus Tabelle 2 Adresse und Telefonspalten aktualisieren, wenn Geschlecht und Geburtsdatum in jeder Zeile gleich sind?
Beispiel: Dies sind einige Daten in Tabelle 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|
-------------------------------------------------------------------------
und hier sind einige Daten in Tabelle 2
-----------------------------------------
| gender | address | phone | birthdate |
-----------------------------------------
| Male | 1704test|0457852|1980-01-01 |
-----------------------------------------
| Female | 1705abcs|0986532|1970-01-01 |
-----------------------------------------
| Male | 1602cyzd|0326589|1990-01-01 |
-----------------------------------------
Ich möchte Tabelle 1 mit Daten aus Tabelle 2 aktualisieren und Geschlecht und Geburtsdatum überprüfen und Tabelle 1 mögen
-------------------------------------------------------------------------
| 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|
-------------------------------------------------------------------------
Wie kann ich das machen?
sql-server
t-sql
sql-server-2014
join
update
John Doe
quelle
quelle
UNIQUE
Einschränkung gibttable2 (gender, birthdate)
, sollten Sie diese Informationen in die Frage einfügen.Antworten:
Es gibt viele Möglichkeiten, um die gewünschten Ergebnisse zu erzielen.
Undeterministische Methoden
(für den Fall, dass viele Zeilen in Tabelle 2 mit einer in Tabelle 1 übereinstimmen)
Oder eine etwas prägnantere Form
Oder mit einem CTE
Deterministische Methoden
MERGE
würde einen Fehler auslösen, anstatt nicht deterministische Ergebnisse zu akzeptierenOder Sie können einen bestimmten Datensatz auswählen, wenn mehr als eine Übereinstimmung vorliegt
Mit
APPLY
.. Oder ein CTE
quelle
tgt_address
undtgt_phone
Aliase für Spalten in sind#Table1
- das ist also das Ziel für das Update.quelle