Are you actually trying to update the data, not insert new rows? I mean something like:
UPDATE Table20
SET LName = (SELECT t21.LName
FROM Table21 t21
WHERE t21.User_ID = Table20.User_ID)
INSERT statement would be used in a situation where you're about to add new rows to the table. UPDATE then again is used for updating data in columns for existing rows.
The statement above uses a correlated subquery to update the LName. This means that each of the rows in Table20 is looped and for each row the statement tries to find corresponding LName using the User_ID as a key. As you can see from the aliases used in the correlated subquery, the User_Id is fetched from the outer statement (Table20) and matched with the inner statement (alias t21).
From OP:
I used the code you gave and I Executed it and it said that 771 row affected. I did a refresh of the table and there is no data in column LName.
Try the following query
SELECT T20.User_ID, T21.LName, T20.Color, T20.Car
FROM Table20 T20
INNER JOIN Table21 T21 ON T20.User_ID = T21.User_ID;
Does that query show the rows and fetch the LName to the result set correctly? If not then the user id's are not matching between the tables.