I'm trying to update a table's value using max(col) in a subquery, but for some reason, it's updating all values that match the user_id column I'm using.
This is my table structure:
user_id | steps | in_date
--------+-------+-----------
8       |10     | 1522246892
8       |10     | 1522250713
7       |10     | 1522250799
And this is my query:
UPDATE userdata
    SET steps = (steps + 20)
    WHERE user_id = 8
    AND in_date = (SELECT max(in_date) WHERE user_id = 8);
I expected it to update only the second column, but it instead updates both columns with user_id = 8. Why isn't it working as expected? What am I doing wrong?
Edit: Thanks to Manoj's comment, I changed the query to the following, and it works:
UPDATE userdata 
    SET steps = (steps + 20)
    WHERE user_id = 8
    ORDER BY in_date DESC LIMIT 1;
Doing it his way is even better, since I don't have to run two queries, and already gets the highest one by id.
 
     
    