Solved

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

Posted on 2014-03-12
13
232 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 5
  • 5
13 Comments
 
LVL 143

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 143

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
Enterprise Mobility and BYOD For Dummies

Like “For Dummies” books, you can read this in whatever order you choose and learn about mobility and BYOD; and how to put a competitive mobile infrastructure in place. Developed for SMBs and large enterprises alike, you will find helpful use cases, planning, and implementation.

 

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 143

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
 

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 143

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 143

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

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

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

As a database administrator, you may need to audit your table(s) to determine whether the data types are optimal for your real-world data needs.  This Article is intended to be a resource for such a task. Preface The other day, I was involved …
I'm trying, I really am. But I've seen so many wrong approaches involving date(time) boundaries I despair about my inability to explain it. I've seen quite a few recently that define a non-leap year as 364 days, or 366 days and the list goes on. …
Although Jacob Bernoulli (1654-1705) has been credited as the creator of "Binomial Distribution Table", Gottfried Leibniz (1646-1716) did his dissertation on the subject in 1666; Leibniz you may recall is the co-inventor of "Calculus" and beat Isaac…

726 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