我正在创建一个使用来自同一个表两次的数据的视图。因此,相同的列名称会出现两次。
因此,我需要为这些列提供别名。如果我这样做,我会把它写成:
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
但这不起作用。谢谢你的帮助!
修改
这是我实际获得的数据:
| id | name | id | name |
1 john 2 alex
以下是我想要获得的数据(同时仍然使用SELECT u.*, u2.*
):
| id | name | brother_id | brother_name |
1 john 2 alex
答案 0 :(得分:27)
您不能将*
与别名一起使用。别名可用于单独的列。
您必须为每列添加别名..
所以不幸的是,如果你有很多专栏,你需要去:
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
答案 1 :(得分:1)
尝试使用UNION查询:
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
答案 2 :(得分:1)
你能不能只使用SELECT *
,然后在你的代码中引用u.field1
和u2.field2
?
答案 3 :(得分:-1)
SELECT别名。*确实可以在mysql> = 5.6
中使用