MySql使用连接时是否绝对有必要使用带有列名的表别名?

时间:2014-05-17 05:57:29

标签: mysql sql join

我正在使用内部联接从两个表中选择数据,并注意到即使我没有在列名旁边指定表别名,事情仍然正常。

是否可以执行此操作,或者列名称旁边的表别名是绝对必要的。

示例:

表一

"postTitle"     "postBody"      "userId"    "userName"
"Post One"      "Body One"      "1"         "norman"
"Post Two"      "Body Two"      "1"         "norman"
"Post Three"    "Body Three"    "2"         "john"
"Post Four"     "Body Four"     "3"         "tom"

表二

"userPosts" "userFriends"   "userStatus"    "userId"    "userName"
"2"         "5"             "1"             "1"         "norman"
"1"         "2"             "0"             "2"         "john"
"1"         "3"             "0"             "3"         "tom"

我不小心做了什么,但仍然有效(注意:列名旁边没有别名)

select postTitle, postBody, userPosts, userFriends from one a inner join two b on a.userId = b.userId where userStatus = 1;

我应该做什么(注意:列名旁边的别名)

select a.postTitle, a.postBody, b.userPosts, b.userFriends from one a inner join two b on a.userId = b.userId where b.userStatus = 1;

第一个sql完美无需使用带有列名的表别名。这是一个错误,还是这种正常行为。我可以使用没有表名别名的列名吗?

我想知道它是如何运作的。在过去,它总是返回某种错误,例如column is unambiguous

1 个答案:

答案 0 :(得分:0)

只有当两个表中的相同字段名称时,才必须在选择查询中使用表别名。如果两个表中的字段具有相同的字段名称,则会出现错误:

column is unambiguous

如果所加入的表中的字段是唯一的,则不会有歧义。