此外怎么办LEFT JOIN,RIGHT JOIN和FULL JOIN适合吗?
大多数SQL方言都接受以下查询:
SELECT a.foo, b.foo
FROM a, b
WHERE a.x = b.x
SELECT a.foo, b.foo
FROM a
LEFT JOIN b ON a.x = b.x
Run Code Online (Sandbox Code Playgroud)
现在很明显,当您需要外连接时,需要第二种语法.但是在进行内部连接时,为什么我更喜欢第二种语法(反之亦然)?
我一直在CROSS / OUTER APPLY和同事一起看,我们正在努力寻找现实生活中使用它们的例子.
我花了很多时间看看我何时应该使用Cross Apply而不是Inner Join?和谷歌搜索但主要(唯一)的例子似乎很奇怪(使用表中的行数来确定从另一个表中选择多少行).
我认为这种情况可能会受益于OUTER APPLY:
联系人表(每个联系人包含1条记录)通讯条目表(每个联系人可以包含n个电话,传真,电子邮件)
但是使用子查询,公共表表达式,OUTER JOIN与RANK()和OUTER APPLY似乎都同样执行.我猜这意味着该方案不适用于APPLY.
请分享一些现实生活中的例子并帮助解释这个功能!
结果有什么不同:
你能通过一些例子解释一下吗?
只需使用查询和示例来更好地了解联接.我注意到在SQL Server 2008中,以下两个查询给出了相同的结果:
SELECT * FROM TableA
FULL OUTER JOIN TableB
ON TableA.name = TableB.name
Run Code Online (Sandbox Code Playgroud)
SELECT * FROM TableA
FULL JOIN TableB
ON TableA.name = TableB.name
Run Code Online (Sandbox Code Playgroud)
这些是完全相同的动作产生相同的结果,还是会在更复杂的例子中遇到不同的结果?这只是可互换的术语吗?
有什么区别Left Join and Left Outer Join?
LEFT OUTER JOIN或LEFT JOIN
我的问题,在MSSQL中是
JOIN
Run Code Online (Sandbox Code Playgroud)
也相当于
LEFT JOIN
Run Code Online (Sandbox Code Playgroud) 我有两个具有相似列名的表,我需要从左表中返回在右表中找不到的记录?我有一个主键(列),可以帮助我比较两个表.哪个加入是首选?
我如何保持左外连接(我认为它是左外连接但我不是100%确定)两个数据表具有以下表和条件,同时保留两个表中的所有列?
dtblLeft:
id col1 anotherColumn2
1 1 any2
2 1 any2
3 2 any2
4 3 any2
5 3 any2
6 3 any2
7 any2
Run Code Online (Sandbox Code Playgroud)
dtblRight:
col1 col2 anotherColumn1
1 Hi any1
2 Bye any1
3 Later any1
4 Never any1
Run Code Online (Sandbox Code Playgroud)
dtblJoined:
id col1 col2 anotherColumn1 anotherColumn2
1 1 Hi any1 any2
2 1 Hi any1 any2
3 2 Bye any1 any2
4 3 Later any1 any2
5 3 Later any1 any2
6 3 Later any1 any2
7 any2
Run Code Online (Sandbox Code Playgroud)
条件: …
我想知道mySQL中的LEFT JOIN和LEFT OUTER JOIN是否有任何区别.如果没有差异那么为什么有两种不同的方式呢?
提前致谢...
join ×7
sql ×7
outer-join ×4
left-join ×3
mysql ×2
sql-server ×2
c# ×1
database ×1
datatable ×1
inner-join ×1
linq ×1
right-join ×1
syntax ×1
t-sql ×1