Skip to main content

SQL Merge


When writing an SQL Merge Statement, I wanted to avoid updating rows that hadn't changed. 

The trick is to use EXISTS and EXCEPT 

The page at http://www.made2mentor.com/2013/05/writing-t-sql-merge-statements-the-right-way/ explains this well

There's also a reference to Paul White's page https://www.sql.kiwi/





MERGE  #Customer_New AS Target
 USING #Customer_Orig AS Source
    ON Target.CustomerNum = Source.CustomerNum
WHEN MATCHED AND EXISTS
                    (SELECT Source.CustomerName, Source.Planet
                     EXCEPT
                     SELECT Target.CustomerName, Target.Planet)
THEN
   UPDATE SET
      Target.CustomerName = Source.CustomerName
     ,Target.Planet = Source.Planet
WHEN NOT MATCHED BY TARGET
THEN
   INSERT (CustomerNum, CustomerName, Planet)
   VALUES (CustomerNum, Source.CustomerName, Source.Planet)
WHEN NOT MATCHED BY SOURCE THEN DELETE;

Comments

Popular posts from this blog

Fixing a https Cert in Windows

 I renewed a https cert today in Windows and had problems with the new Cert sticking in Windows It would add fine, without error, but would disappear when the IIS Server Certificates screen would refresh.  Open the Certificates in MMC (Local Machine) and inspecting the Web Hosting gave a clue, the new certificate was there, but with a key - the private key was missing.  Could be because the original certificate was created on a completely different machine and imported to this new server.  At any rate, a simple certutil command fixed it .  A tip I received from  SSL disappears from the certificate list on Windows server - SSL Certificates - Namecheap.com Key steps are:  Double-click the certificate and go to  Details  tab. In certificate details locate the  Serial Number  field, click on it and copy its value. Open Command Prompt, pressing  Win+R  and typing  cmd , then click  OK In the command prompt type: ...

Ever need to reset a password in Bonobo Git Server ?

So, you've forgotten your password to bonobo git. Step 1: Get access to the sqlite file, probably called something like  Bonobo.Git.Server.db, sitting in the "wwwroot\Bonobo.Git.Server\App_Data" directory. Step 2: Using another tool, generate an md5 hash of your new desired password (as far as I know, sqlite does not have md5 capability) Step 3: Back in sqlite, using SQL, update the relevant user record, something like update User set Password = UPPER( 'thenewMD5hash') where Username = 'admin' ; Step 4: That's it, you are done, log in with your newly found password.

How to Sign a C# .Net WPF Application

  To sign a C# WPF .NET 6 application, you can follow these steps: Generate a strong name key pair: Open the Developer Command Prompt for Visual Studio (search for it in the Start menu). Navigate to the project directory using the cd command. Run the following command to generate a strong name key pair: Copy code sn -k keypair.snk Configure your project to use the strong name key pair: In Visual Studio (prior to 2022), open your WPF project. Right-click on the project in the Solution Explorer and select "Properties." In the project properties, go to the "Signing" tab. Check the "Sign the assembly" checkbox. Click the "..." button next to the "Choose a strong name key file" field and browse to select the keypair.snk file you generated in the previous step. Click "OK" to save the changes. Configure the project for ClickOnce deployment (optional but recommended for distributing your application): In the project properties, go t...