如果连接表中不存在连接ID,如何显示连接表中的数据?

ice*_*n31 2 sql-server

我有以下表格及相应的数据:

RequestsTable
ReqID | ReqBy | ReqDate
1 | User1 | 30/04/2013
2 | User2 | 30/04/2013
3 | MasterUser | 30/04/2013
Run Code Online (Sandbox Code Playgroud)

RequestorsTable
ReqUserName | ReqFullName
User1 | Sample User 1
User2 | Sample User 2
Run Code Online (Sandbox Code Playgroud)

我需要输出如下:

ReqID | ReqBy | ReqDate
1 | Sample User 1 | 30/04/2013
2 | Sample User 2 | 30/04/2013
3 | MasterUser | 30/04/2013
Run Code Online (Sandbox Code Playgroud)

我可以知道怎么办^^?

快速说明:MasterUser是一个超级用户帐户,因此不在数据库中,但可以提出请求.

谢谢您的帮助.

Lie*_*ers 5

使用ISNULLLEFT OUTER JOIN允许您有选择地选择要在结果集中返回的列.

  • 如果在RequestorsTable中找到匹配的记录,请使用该值
  • 否则,使用RequestsTable中的ReqBy值

示例Select语句

SELECT rt.ReqID, ISNULL(rst.ReqFullName, rt.ReqBy), rt.ReqDate
FROM   RequestsTable rt
       LEFT OUTER JOIN RequestorsTable rst ON rst.ReqUserName = rt.ReqBy
Run Code Online (Sandbox Code Playgroud)

替代方案ISNULL将是更多或COALESCE更少执行类似的功能.

示例Select语句

SELECT rt.ReqID, COALESCE(rst.ReqFullName, rt.ReqBy), rt.ReqDate
FROM   RequestsTable rt
       LEFT OUTER JOIN RequestorsTable rst ON rst.ReqUserName = rt.ReqBy
Run Code Online (Sandbox Code Playgroud)