|  | Posted by Erland Sommarskog on 01/30/07 22:35 
(joelranck@gmail.com) writes:> I'm trying to update an older table with some new information. Our
 > previous systems stored US state info by their abbreviation, now have
 > a state table and link with the appropriate state id.
 
 I can't escape the comment that this does not sound like the best design
 to me. Having a table for states is a good idea, but the well-established
 two-letter codes are much better for keys than an id.
 
 > I would like to update the old table to our new system so set a new
 > field called state_id to the state id of the state abbreviation in the
 > old table.
 >
 > UPDATE accounts
 > SET state_id =
 >                        (SELECT     states.state_id
 >                         FROM        states, accounts
 >                         WHERE     states.state_abbr = accounts.state)
 >
 > So something similar to above but that is not the correct syntax. I've
 > done this before in the past but can't remember the syntax for the
 > life of me.
 
 Just remove "accounts" from the correlated subquery, and you have an
 ANSI-compliant solution.
 
 Dick's solution works well too.
 
 --
 Erland Sommarskog, SQL Server MVP, esquel@sommarskog.se
 
 Books Online for SQL Server 2005 at
 http://www.microsoft.com/technet/prodtechnol/sql/2005/downloads/books.mspx
 Books Online for SQL Server 2000 at
 http://www.microsoft.com/sql/prodinfo/previousversions/books.mspx
  Navigation: [Reply to this message] |