什么之间的区别INNER JOIN,LEFT JOIN,RIGHT JOIN并FULL JOIN
在MySQL的?
这个问题已经被要求用于MySQL,但对于Transact-SQL,默认JOIN行为是什么?
也就是说,简单地写JOIN一个与写作同义的查询INNER JOIN(就像MySQL的情况一样),或者其他什么东西,比如说也许FULL OUTER JOIN?
我找不到关键词的文档,join但我在网上看到了使用它的例子.
我在Oracle hr模式中做了一些实验,我有表departments:
deparment_namemanager_idlocation_id一张桌子employees:
first_nameemployee_id和表locations:
location_idcity查询应返回department_name,部门经理的first_name以及部门所在的城市.
与使用关键字join相比,使用关键字的代码似乎返回了一些结果inner join
代码join:
select d.department_name, e.first_name,l.city
from departments d
join employees e on d.manager_id=e.employee_id
join locations l on d.location_id=l.location_id
Run Code Online (Sandbox Code Playgroud)
代码inner join:
select d.department_name, e.first_name,l.city
from departments d
inner join employees e on d.manager_id=e.employee_id
inner join locations l on d.location_id=l.location_id
Run Code Online (Sandbox Code Playgroud)
两种情况之间是否存在差异,或者我恰好偶然发现他们返回相同结果的情况?
可能重复:
JOIN和INNER JOIN之间的差异
我找到了MS SQL Server的一些遗留SQL(T-SQL),它有一个子句
TableA JOIN TableB
Run Code Online (Sandbox Code Playgroud)
我只是想知道这是否相同
TableA INNER JOIN TableB
Run Code Online (Sandbox Code Playgroud)
或者如果有什么不同?
另外,如果我将它移植到另一个数据库引擎,例如MySQL,Access,Oracle,JOIN也总是和INNER JOIN一样吗?
我到处都可以看到内部联接,右联接,左联接等,但是什么样的联接只是常规联接。例如
SELECT titel
FROM films AS f
JOIN reviews AS r ON f.id = r.film_id
Run Code Online (Sandbox Code Playgroud) 基于使用子查询的typeORM 文档,介绍了如何创建子查询。例:
const qb = await getRepository(Post).createQueryBuilder("post");
const posts = qb
.where("post.title IN " + qb.subQuery().select("user.name").from(User, "user").where("user.registered = :registered").getQuery())
.setParameter("registered", true)
.getMany();
Run Code Online (Sandbox Code Playgroud)
但是,SQL并没有等同的含义。
假设我有包含如下子查询的查询:
SELECT a, TO_CHAR (MAX (jointable.f), 'MON YYYY') as f,
t3.c, t3.d, t1.e
FROM table1 t1
LEFT JOIN table2 t2 ON t2.e = t1.e
JOIN table3 t3 ON t3.d = t2.d
JOIN
(SELECT f, t4.g, t5.e, t6.h
FROM table4 t4
JOIN table5 t5 ON t4.g = t5.g
JOIN table6 t6 ON t6.g = t4.g
AND (t6.i …Run Code Online (Sandbox Code Playgroud) 内连接和简单连接之间有什么性能差异吗?即他们中的任何一个有更好的执行计划和/或执行时间吗?并且这两种方法总是会产生相同的结果集吗?
sql ×9
join ×6
inner-join ×2
oracle ×2
sql-server ×2
t-sql ×2
database ×1
mysql ×1
outer-join ×1
rdbms ×1
typeorm ×1