MySQL alias for SELECT * columns

2019-01-23 01:14发布

问题:

I'm creating a view that is using data that comes from the same table twice. As a result, same column names appear twice.

Thus, i need to give aliases to these columns. If i were to do it, i'd write it as:

SELECT u.* as 'one_*', u2.* as 'two_*'
FROM users u
LEFT JOIN relationships r ON u.id=r.id_one
LEFT JOIN users u2 ON r.id_two=u2.id

But that doesn't work. Thanks for your help!

EDIT:

Here's the data i'm actually getting:

|  id  | name |  id  | name |
   1     john    2     alex

Here's the data i'd like to get (while still using a SELECT u.*, u2.*):

|  id  | name |  brother_id  | brother_name |
   1     john        2             alex

回答1:

You can't use * with an alias. Aliases can be used for individual columns.

You'll have to alias each column instead..

So unfortunately, if you have a lot of columns, you'll need to go:

SELECT u.col1 AS u_col1
    , u.col2 AS u_col2
    , u.col3 AS u_col3
    -- etc
    , u2.col1 AS u2_col1
    , u2.col2 AS u2_col2
    , u2.col3 AS u2_col3
    -- etc
FROM table1 AS u
-- INNER JOIN / LEFT OR RIGHT OUTER JOIN / ,
    table2 AS u2


回答2:

Try using a UNION query:

e.g.

select a.typeid, a.typename from MYTABLE a where a.typeid=3 UNION select a.typeid, a.typename from MYTABLE a where a.typeid=4



回答3:

Can you not just use SELECT * and then in your code refer to u.field1 and u2.field2?



回答4:

SELECT alias.* does certainly work in mysql >= 5.6



标签: mysql alias