The only way to create table B so that from the start it only contains the records for users from table A is to use an sql statement that left joins table A to table B. That way the sql statement will return the set of data you want.
If that is not possible then all records from table B must be loaded into Qlikview first. You can use a left keep to immediately after loading all records throw out all that don't have a matching user in table A.
If I understood correctly, it should be enough not dropping the complete table after the SELECT - STORE of table A. Just drop all other fields except the user_key.
DROP FIELDS FieldA, FieldB;
Then do a preceding LOAD for your second table B with the where exists clause:
LOAD * WHERE EXISTS(user_key);
SELECT ... FROM tableB;
STORE tableB into ...;
Drop TABLE tableB;
Drop FIELD user_key;
[Alternatively, you can just move your first DROP table after the storing of the second table. If your two tables have the exact same fields, you need to use the NOCONCATENATE LOAD prefix on the second table load.]