Подтвердить что ты не робот

Алиас MySQL для столбцов SELECT *

Я создаю представление, которое использует данные, которые поступают из одной и той же таблицы дважды. В результате одинаковые имена столбцов появляются дважды.

Таким образом, мне нужно дать псевдонимы этим столбцам. Если бы я это сделал, я бы написал его как:

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

Но это не работает. Спасибо за вашу помощь!

EDIT:

Вот данные, которые я получаю:

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

Здесь данные, которые я хотел бы получить (при использовании SELECT u.*, u2.*):

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

Ответ 1

Вы не можете использовать * с псевдонимом. Псевдонимы могут использоваться для отдельных столбцов.

Вам нужно будет использовать псевдоним для каждого столбца.

Так что, к сожалению, если у вас много столбцов, вам нужно будет:

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

Псевдоним SELECT. * действительно работает в mysql >= 5.6

Ответ 3

Попробуйте использовать UNION запрос:

например.

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

Ответ 4

Можете ли вы не просто использовать SELECT *, а затем в своем коде ссылаться на u.field1 и u2.field2?