2017-03-14 14 views
0

MySQLのテーブルにマージしたいと思います。 SQLでは「MERGE」コマンドを使用しますが、MySQLの同等のコマンドは何ですか?私は両方のテーブルに3つの列を持っていると言うことができます。次に、最初の列で行を一致させたい場合は、2番目の列を更新する必要がありますが、元の3番目の列を維持する必要があります。一致しない場合は、新しい行を挿入する必要があります。ここでMySQLで2つのテーブルをマージする

enter image description here

私は、MySQLに変換したいSQLコードです。あなたのクエリは、このようなものでなければなりませんhttps://dev.mysql.com/doc/refman/5.7/en/insert-on-duplicate.html

MERGE [Synsbasen].[dbo].[Koeretoej] AS T 
USING [Synsbasen].[dbo].[KoeretoejLoad] AS S ON (T.KoeretoejIdent = S.KoeretoejIdent) 
WHEN NOT MATCHED BY TARGET 
    THEN INSERT(KoeretoejIdent, KoeretoejArtNavn, KoeretoejAnvendelseNavn, RegistreringNummerNummer, KoeretoejOplysningStatus, KoeretoejOplysningFoersteRegistreringDato, KoeretoejOplysningStelNummer, KoeretoejMaerkeTypeNavn, KoeretoejModelTypeNavn, KoeretoejVariantTypeNavn, DrivkraftTypeNavn, SynResultatSynsType, SynResultatSynsDato, SynResultatSynStatusDato, SidsteSynTjek) 
     VALUES(S.KoeretoejIdent, S.KoeretoejArtNavn, S.KoeretoejAnvendelseNavn, S.RegistreringNummerNummer, S.KoeretoejOplysningStatus, S.KoeretoejOplysningFoersteRegistreringDato, S.KoeretoejOplysningStelNummer, S.KoeretoejMaerkeTypeNavn, S.KoeretoejModelTypeNavn, S.KoeretoejVariantTypeNavn, S.DrivkraftTypeNavn, S.SynResultatSynsType, S.SynResultatSynsDato, S.SynResultatSynStatusDato, CONVERT(VARCHAR(10),'1900-01-01',110)) 
WHEN MATCHED 
    THEN UPDATE SET 
     T.KoeretoejArtNavn = S.KoeretoejArtNavn, 
     T.KoeretoejAnvendelseNavn = S.KoeretoejAnvendelseNavn, 
     T.RegistreringNummerNummer = S.RegistreringNummerNummer, 
     T.KoeretoejOplysningStatus = S.KoeretoejOplysningStatus, 
     T.KoeretoejOplysningFoersteRegistreringDato = S.KoeretoejOplysningFoersteRegistreringDato, 
     T.KoeretoejOplysningStelNummer = S.KoeretoejOplysningStelNummer, 
     T.KoeretoejMaerkeTypeNavn = S.KoeretoejMaerkeTypeNavn, 
     T.KoeretoejModelTypeNavn = S.KoeretoejModelTypeNavn, 
     T.KoeretoejVariantTypeNavn = S.KoeretoejVariantTypeNavn, 
     T.DrivkraftTypeNavn = S.DrivkraftTypeNavn, 
     T.SynResultatSynsType = S.SynResultatSynsType, 
     T.SynResultatSynsDato = S.SynResultatSynsDato, 
     T.SynResultatSynStatusDato = S.SynResultatSynStatusDato; 

答えて

1

ルックで

INSERT into Koeretoej 
     (KoeretoejIdent, KoeretoejArtNavn, KoeretoejAnvendelseNavn, 
     RegistreringNummerNummer, KoeretoejOplysningStatus, 
     KoeretoejOplysningFoersteRegistreringDato, KoeretoejOplysningStelNummer, 
     KoeretoejMaerkeTypeNavn, KoeretoejModelTypeNavn, KoeretoejVariantTypeNavn, 
     DrivkraftTypeNavn, SynResultatSynsType, SynResultatSynsDato, 
     SynResultatSynStatusDato, SidsteSynTjek) 
SELECT 
     S.KoeretoejIdent, S.KoeretoejArtNavn, S.KoeretoejAnvendelseNavn, 
     S.RegistreringNummerNummer, S.KoeretoejOplysningStatus, 
     S.KoeretoejOplysningFoersteRegistreringDato, 
     S.KoeretoejOplysningStelNummer, S.KoeretoejMaerkeTypeNavn, 
     S.KoeretoejModelTypeNavn, S.KoeretoejVariantTypeNavn, 
     S.DrivkraftTypeNavn, S.SynResultatSynsType, S.SynResultatSynsDato, 
     S.SynResultatSynStatusDato, DATE_FORMAT("19000101","%m-%d-%Y") 
FROM KoeretoejLoad S LEFT JOIN Koeretoej T ON 
    T.KoeretoejIdent = S.KoeretoejIdent 
ON DUPLICATE KEY UPDATE 
     KoeretoejArtNavn=S.KoeretoejArtNavn, 
     KoeretoejAnvendelseNavn=S.KoeretoejAnvendelseNavn, 
     RegistreringNummerNummer=S.RegistreringNummerNummer, 
     KoeretoejOplysningStatus=S.KoeretoejOplysningStatus, 
     KoeretoejOplysningFoersteRegistreringDato=S.KoeretoejOplysningFoersteRegistreringDato, 
     KoeretoejOplysningStelNummer=S.KoeretoejOplysningStelNummer, 
     KoeretoejMaerkeTypeNavn=S.KoeretoejMaerkeTypeNavn, 
     KoeretoejModelTypeNavn=S.KoeretoejModelTypeNavn, 
     KoeretoejVariantTypeNavn=S.KoeretoejVariantTypeNavn, 
     DrivkraftTypeNavn=S.DrivkraftTypeNavn, 
     SynResultatSynsType=S.SynResultatSynsType, 
     SynResultatSynsDato=S.SynResultatSynsDato, 
     SynResultatSynStatusDato=S.SynResultatSynStatusDato, 
     SidsteSynTjek=DATE_FORMAT("19000101","%m-%d-%Y") 
+0

おかげで、これは正しく見えます!私は今日後でそれをテストします! – TobiasKnudsen

関連する問題