Алиас 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
Ответы
Ответ 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
?