phpmysqlsqlmysql-error-1222

select * from two tables with different # of columns


How would I select different columns from two different tables, such as:

SELECT username, email FROM `table1` 
UNION
 SELECT * FROM `table2` WHERE username = 'user1';

I'm getting an error "#1222 - The used SELECT statements have a different number of columns". From what I understand UNION will not work,

Is there a way to accomplish this, since I would need unequal number of columns and rows and there are no mutual/similar entries in the two tables (i.e. user1 is not listed in table1)?

Can this not be done in one query?

thank you!


Solution

  • You can fake the missing columns using an alias - e.g.

     SELECT username, email, '' as name FROM `table1` 
     UNION
     SELECT username, email, name FROM `table2` 
     WHERE username = 'user1';
    

    where name is in table2, but not in table1

    Unless you're confusing UNIONS with JOINS:

    SELECT table1.*, table2.* FROM
    table1 INNER JOIN table2
    ON table1.username = table2.username
    

    this would merge both tables, so you get all the columns on the same row.