Iva*_*van 6 mysql sql left-join
我有一张像这样的旧桌子:
user> id | name | address | comments
Run Code Online (Sandbox Code Playgroud)
现在我要创建一个"别名"表,以允许某些用户出于某些原因拥有别名.我已经创建了一个新表'user_alias',如下所示:
user_alias> name | user
Run Code Online (Sandbox Code Playgroud)
但是由于我的SQL级别很差,现在我遇到了问题...如何连接两个表来生成这样的东西:
1 | my_name | my_address | my_comments
1 | my_alias | my_address | my_comments
2 | other_name | other_address | other_comments
Run Code Online (Sandbox Code Playgroud)
我的意思是,我想创建一个"SELECT ..."查询,返回的格式与"user"表格中所有用户和ALL别名相同.这样的事情:
SELECT user.* FROM user LEFT JOIN user_alias ON `user`=`id`
Run Code Online (Sandbox Code Playgroud)
但它对我不起作用..
就像是
SELECT user.name, user.address, user.comment FROM user
UNION ALL
SELECT user_alias.alias, user.address, user.comment
FROM user INNER JOIN user_alias on user.name = user_alias.name
ORDER BY name
Run Code Online (Sandbox Code Playgroud)
会让你接近你想要的。
您需要将两个 SELECT 合并在一起,因为其他人提出的 LEFT JOIN 解决方案将仅在结果集中包含具有别名的用户的一行,而不是问题中指定的两行。
但是您应该将公共列连接到 user 并为 id 列(而不是 name 列)指定别名。
| 归档时间: |
|
| 查看次数: |
283 次 |
| 最近记录: |