【发布时间】:2018-02-05 12:39:44
【问题描述】:
我在尝试从联接中检索所有结果时遇到问题。我在 SQL fiddle 中设置了一个类似的场景,它可以工作,但在 SQL Server 中却不行。如果开具发票或发货,我想为所有内容提供结果。
我在 SQL-SERVER 中得到的结果是
| No | Order1 | Shipdate | No | Order1 | InvDate |
|-----|--------|----------|--------|--------|----------|
| 111 | 222 | 17-01-18 | 111 | 222 | 24-01-18 |
| 222 | 333 | 18-01-18 | 222 | 333 | 24-01-18 |
即使将连接更改为完全外部,右连接我仍然会得到这个结果。
我原以为如果我使用完整的外部,无论匹配如何,它都会带回所有结果,但事实并非如此。
我缺少什么来给我完整的外部结果?谢谢
sql 小提琴 - http://sqlfiddle.com/#!18/89943/1
【问题讨论】:
-
你的小提琴只包含一个左连接...!?
-
如果你想得到所有结果,你可以使用交叉连接。
-
@daniel.shih
CROSS JOIN和OUTER JOIN非常不同。仍然尝试根据提供的ON子句(OUTER JOIN)关联数据集,但如果没有建立关联,仍会从双方返回行。但是,另一个使用两个数据集 (CROSS JOIN) 中的所有数据创建笛卡尔积。 -
@Larnu 谢谢你的提醒 :)
-
“它可以工作,但在 SQL Server 中它不能”和“将连接更改为完全外部右连接”没有意义。 “为所有事情带来结果”和“无论匹配如何都带回所有结果”尚不清楚。您的文字不清楚,并且您没有为您的输入显示所需的输出。请编辑清楚。这包括minimal reproducible example。 PS Full join 是left join union right join。左连接是内连接行加上由空值扩展的不匹配的左表行。您使用的是什么参考?
标签: sql sql-server join left-join