Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在FROM子句中列出表本质上与内部联接相同吗?_Sql_Oracle_Join - Fatal编程技术网

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