Solved

Need UPDATE query to add data to table

Posted on 2009-04-01
6
481 Views
Last Modified: 2012-05-06
I have to combine 2 tables that should have originally been just one table. The first table contained a ClientID (manually entered number) and about 100 columns that were part of a survey. The second table contained the sameClientID and about 60 more columns that were part of the same survey. So now I have a table with one ClientID and all 160 columns but I only have the old data for the first 100 columns . I need to create an UPDATE query that will add the remaining 60 columns data to the table based on the matching ClientID field. I havent figured out how to make this happen with an SQL Server query...please help.
0
Comment
Question by:myndwire
6 Comments
 
LVL 4

Expert Comment

by:bleach77
ID: 24046667
UPDATE table160
SET column1=(SELECT column1 FROM table60 WHERE table60.ClientID = table160.ClientID)
WHERE table160.ClientID = table60.ClientID

Don't forget to backup your data before trying this. :)
0
 
LVL 4

Expert Comment

by:bleach77
ID: 24046733
That one is only for one column. You can add it in the SET query.
Between this is assumptions that all ClientID is unique in both table.
UPDATE table160
SET column1=(SELECT column1 FROM table60 WHERE table60.ClientID = table160.ClientID), column2=(SELECT column2 FROM table60 WHERE table60.ClientID = table160.ClientID)
WHERE table160.ClientID = table60.ClientID

Open in new window

0
 
LVL 28

Accepted Solution

by:
TextReport earned 500 total points
ID: 24047102
IN SQL Server you can do this with the FROM clause to join your tables.
Cheers, Andrew

UPDATE tblA
SET ColA = tblB.ColA
   ,ColB = tblB.ColB
   ,ColC = tblB.ColC
FROM tblA INNER JOIN tblB ON tblA.ClientId = tblB.ClientID

Open in new window

0
VMware Disaster Recovery and Data Protection

In this expert guide, you’ll learn about the components of a Modern Data Center. You will use cases for the value-added capabilities of Veeam®, including combining backup and replication for VMware disaster recovery and using replication for data center migration.

 
LVL 4

Expert Comment

by:bleach77
ID: 24047563
TextReport solution should be much better than mine.  :)
0
 
LVL 22

Expert Comment

by:dportas
ID: 24049237
In SQL Server 2008 use the MERGE statement instead of UPDATE with a JOIN:

MERGE INTO TableA
USING TableB ON TableA.ClientId = TableB.ClientID
WHEN MATCHED THEN UPDATE SET
 col1 = TableB.col1,
 col2 = TableB.col2,
 col3 = TableB.col3 ;
 
0
 
LVL 51

Expert Comment

by:Mark Wills
ID: 24058919
Curious, there are two solutions that will wor, so, why hasn't this been accepted or responded to ?

Just in case... Do you still have the old tables ? Or is the clientid in the same new table twice and you need to merge / fix within the same table ?

You can always refer to tableA as an alias of TableB in the above examples, just need to put in a bit more qualification to pick up those rows which have the missing rows...

e.g. 2008 merge syntax

MERGE INTO TableA
USING TableA as TableB ON TableA.ClientId = TableB.ClientID and TableA.col1 is NULL and TableB.col1 is not NULL      -- assuming col1 is one of those 'missing' columns
WHEN MATCHED THEN UPDATE SET
 col1 = TableB.col1,
 col2 = TableB.col2,
 col3 = TableB.col3 ;


or general SQL syntax :

UPDATE tblA
SET ColA = tblB.ColA
   ,ColB = tblB.ColB
   ,ColC = tblB.ColC
FROM tblA
INNER JOIN tblA as tblB ON tblA.ClientId = tblB.ClientID AND tbla.ColA is NULL and tblb.ColA is not NULL
0

Featured Post

Best Practices: Disaster Recovery Testing

Besides backup, any IT division should have a disaster recovery plan. You will find a few tips below relating to the development of such a plan and to what issues one should pay special attention in the course of backup planning.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

     When we have to pass multiple rows of data to SQL Server, the developers either have to send one row at a time or come up with other workarounds to meet requirements like using XML to pass data, which is complex and tedious to use. There is a …
Hi all, It is important and often overlooked to understand “Database properties”. Often we see questions about "log files" or "where is the database" and one of the easiest ways to get general information about your database is to use “Database p…
This Micro Tutorial will teach you how to censor certain areas of your screen. The example in this video will show a little boy's face being blurred. This will be demonstrated using Adobe Premiere Pro CS6.
This video shows how to quickly and easily add an email signature for all users on Exchange 2016. The resulting signature is applied on a server level by Exchange Online. The email signature template has been downloaded from: www.mail-signatures…

786 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question