Możesz fake
brakujące kolumny przy użyciu aliasu - np.
SELECT username, email, '' as name FROM `table1`
UNION
SELECT username, email, name FROM `table2`
WHERE username = 'user1';
gdzie nazwa jest w tabeli 2, ale nie w tabeli 1
Chyba że mylisz UNIIONS z JOINS:
SELECT table1.*, table2.* FROM
table1 INNER JOIN table2
ON table1.username = table2.username
spowodowałoby to scalenie obu tabel, więc wszystkie kolumny znajdują się w tym samym wierszu.