Puedes fake
las columnas que faltan usando un alias - por ejemplo,
SELECT username, email, '' as name FROM `table1`
UNION
SELECT username, email, name FROM `table2`
WHERE username = 'user1';
donde el nombre está en la tabla 2, pero no en la tabla 1
A menos que esté confundiendo UNIONS con JOINS:
SELECT table1.*, table2.* FROM
table1 INNER JOIN table2
ON table1.username = table2.username
esto fusionaría ambas tablas, por lo que obtendrá todas las columnas en la misma fila.