Você pode
fake
as colunas ausentes usando um alias - por exemplo SELECT username, email, '' as name FROM `table1`
UNION
SELECT username, email, name FROM `table2`
WHERE username = 'user1';
onde o nome está na tabela2, mas não na tabela1
A menos que você esteja confundindo UNIONS com JOINS:
SELECT table1.*, table2.* FROM
table1 INNER JOIN table2
ON table1.username = table2.username
isso mesclaria as duas tabelas, então você obteria todas as colunas na mesma linha.