Solved

Updating a value in one row to a value in another row of same table in mysql

Posted on 2014-03-12
13
225 Views
Last Modified: 2014-03-18
I have a customers table and want to update a value in (customer ID=x) col=a to (customer ID=y) col=c.
Current value in col a for customer ID=x is 1 and current value in col c for customer ID=y is 2

I want to run a query to update the 2 value in customer y (column name = Count) to be the same as the 1 value in customer x (column name = Subcount)
0
Comment
Question by:dynorich
  • 5
  • 5
13 Comments
 
LVL 142

Assisted Solution

by:Guy Hengel [angelIII / a3]
Guy Hengel [angelIII / a3] earned 500 total points
ID: 39923438
I had written an article about update/join:
http://www.experts-exchange.com/Database/Miscellaneous/A_1517-UPDATES-with-JOIN-for-everybody.html

this should help to solve this: watch out that mySQL is a bit differently than the other dbms in regards to the syntax.
0
 

Author Comment

by:dynorich
ID: 39923796
Didn't see solution.

column names: cid   Count   Sponsorscount
              values:  61         1                 0
                            46          0                2
I need to update Sponsorscount from 2 to equal 1 (the value of Count in cid 61)

How would I write the code below to accomplish this?
UPDATE customers
SET Sponsorscount = Count
WHERE cid=46, cid=61
0
 
LVL 142

Expert Comment

by:Guy Hengel [angelIII / a3]
ID: 39923823
let's see if this works for you:
UPDATE customers 
  set Sponsorscount  = ( select o.`count` from customers o where o.cid = 61 )
WHERE cid = 46 

Open in new window

0
 

Author Comment

by:dynorich
ID: 39923854
Got the following error

#1093 - You can't specify target table 'customers' for update in FROM clause
0
 
LVL 142

Accepted Solution

by:
Guy Hengel [angelIII / a3] earned 500 total points
ID: 39923870
I remember that "issue" now, you cannot update, in mySql, from within the same table.
so, you have to run the query for the "select" part, store the results, and update using the intermedite results.
0
Free Gift Card with Acronis Backup Purchase!

Backup any data in any location: local and remote systems, physical and virtual servers, private and public clouds, Macs and PCs, tablets and mobile devices, & more! For limited time only, buy any Acronis backup products and get a FREE Amazon/Best Buy gift card worth up to $200!

 

Author Comment

by:dynorich
ID: 39924318
I've requested that this question be closed as follows:

Accepted answer: 0 points for dynorich's comment #a39923796

for the following reason:

Good response time and got the reason for my diffiulties and pointed me in another more doable direction.

Thank you
0
 
LVL 142

Expert Comment

by:Guy Hengel [angelIII / a3]
ID: 39924319
Please close using my comments
0
 

Author Comment

by:dynorich
ID: 39933407
Solved the issue by creating a column in another table and then transfering  the value between the two tables.
0
 
LVL 142

Expert Comment

by:Guy Hengel [angelIII / a3]
ID: 39936219
I repeat that I commented that "in mysql, you cannot directly update a table from other rows from the same table" so one needs to first fetch the value to somewhere else, and then use it from there."
if that's a php variable, using a helper function, doing like the Dynorich posted, or whatever else, my comment is the "answer" to the original question: you cannot do it in a single step (like in all other dbms I know)
0
 

Author Comment

by:dynorich
ID: 39938410
I thought I had closed the question with thanks for the help but have had my question asking ability locked. I don't understand what I did wrong but thanks anyways
0

Featured Post

What is SQL Server and how does it work?

The purpose of this paper is to provide you background on SQL Server. It’s your self-study guide for learning fundamentals. It includes both the history of SQL and its technical basics. Concepts and definitions will form the solid foundation of your future DBA expertise.

Join & Write a Comment

Suggested Solutions

If you have heard of RFC822 date formats, they can be quite a challenge in SQL Server. RFC822 is an Internet standard format for email message headers, including all dates within those headers. The RFC822 protocols are available in detail at:   ht…
This article describes how to use the timestamp of existing data in a database to allow Tableau to calculate the prior work day instead of relying on case statements or if statements to calculate the days of the week.
Sending a Secure fax is easy with eFax Corporate (http://www.enterprise.efax.com). First, Just open a new email message.  In the To field, type your recipient's fax number @efaxsend.com. You can even send a secure international fax — just include t…
You have products, that come in variants and want to set different prices for them? Watch this micro tutorial that describes how to configure prices for Magento super attributes. Assigning simple products to configurable: We assigned simple products…

759 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

Need Help in Real-Time?

Connect with top rated Experts

19 Experts available now in Live!

Get 1:1 Help Now