Sql 在FROM子句中列出表本质上与内部联接相同吗?
假设我有这两张桌子:Sql 在FROM子句中列出表本质上与内部联接相同吗?,sql,oracle,join,Sql,Oracle,Join,假设我有这两张桌子: User =============== UserID Username Job UserInfo =============== UserID UserInfo1 UserInfo2 以下两条sql语句是否相同(在Oracle 11g上) 及 请解释/详细说明FROM[表格列表]语法。我不明白那里发生了什么。。。如果有多个用户信息,它会返回所有用户信息吗?还是只匹配每个用户的第一个?如果用户没有任何UserInfo,会从结果中忽略它们吗?这两个
User
===============
UserID
Username
Job
UserInfo
===============
UserID
UserInfo1
UserInfo2
以下两条sql语句是否相同(在Oracle 11g上)
及
请解释/详细说明FROM[表格列表]语法。我不明白那里发生了什么。。。如果有多个用户信息,它会返回所有用户信息吗?还是只匹配每个用户的第一个?如果用户没有任何UserInfo,会从结果中忽略它们吗?这两个查询都是在内部联接中执行的,它将返回两个表之间的所有匹配行 如果
user
表包含单个UserId
,但UserInfo
表包含4行具有相同UserId
,则返回4行。由于有多行匹配,因此返回所有匹配行,而不是第一行
如果要返回在UserInfo
表中没有匹配行的用户
,则必须使用左联接
:
SELECT *
FROM User
LEFT JOIN UserInfo
ON UserInfo.UserID = User.UserID
左连接将返回
UserInfo
表中匹配的行以及不匹配的行。不匹配的行将为UserInfo
值返回一个null
。Yes两者都相同,第一个是隐式连接,另一个是显式连接,它是重复的。在我学会正确的术语之前,我在搜索方面遇到了困难。:)
SELECT * FROM User
INNER JOIN UserInfo ON UserInfo.UserID = User.UserID
SELECT *
FROM User
LEFT JOIN UserInfo
ON UserInfo.UserID = User.UserID