如何将INNER JOIN更改为OUTER JOIN?

时间:2012-04-16 14:12:14

标签: sql sql-server join inner-join nullable

我有2个表:UsersDocuments

1用户可以拥有0个或多个文档。

我想显示每个用户及其文档,但问题是:我想显示没有文档的用户,结果如下(假设IdUser s 3和5没有文档):

IdUser IdDocument DocumentName
====== ========== ============
1      1          test11.pdf
1      2          test12.pdf
1      3          test13.pdf
2      4          test21.pdf
2      5          test21.pdf
3      NULL       NULL
4      6          test41.pdf
5      NULL       NULL

1 个答案:

答案 0 :(得分:1)

您将使用LEFT JOIN执行此操作。

create table users
(
  userid int
)

create table documents
(
  documentid int,
  userid int,
  documentname varchar(10)
)

insert into users values (1)
insert into users values (2)
insert into users values (3)
insert into users values (4)

insert into documents values (1, 1, 'test')
insert into documents values (2, 1, 'test 1')
insert into documents values (3, 2, 'test 2')
insert into documents values (3, 3, 'test 3')

select *
from users u
left join documents d
on u.userid = d.userid

查看sqlfiddle进行测试

您应该对JOINs进行一些研究,以下是JOINs的详细说明:

A Visual Explanation of SQL Joins