加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

Sql查询获取名称列为null

发布时间:2020-12-12 06:25:38 所属栏目:MsSql教程 来源:网络整理
导读:Sql fiddle CREATE TABLE [Users_Reg]( [User_ID] [int] IDENTITY (1,1) NOT NULL CONSTRAINT User_Reg_P_KEY PRIMARY KEY,[Name] [varchar] (50) NOT NULL,[Type] [varchar] (50) NOT NULL /*Technician/Radiologist*/)CREATE Table [Study]( [UID] [INT] ID
Sql fiddle
CREATE TABLE [Users_Reg]
(
   [User_ID]        [int] IDENTITY (1,1) NOT NULL CONSTRAINT User_Reg_P_KEY PRIMARY KEY,[Name]           [varchar] (50) NOT NULL,[Type]           [varchar] (50) NOT NULL /*Technician/Radiologist*/
)

CREATE Table [Study]
(
  [UID]             [INT] IDENTITY (1,1) NOT NULL CONSTRAINT Patient_Study_P_KEY PRIMARY KEY,[Radiologist]     [int],/*user id of Radiologist type*/
  [Technician]      [int],/*user id of Technician type*/

)


select * from Study
inner join Users_Reg
on Users_Reg.User_ID=Study.Radiologist

在patient_study表中,放射科医师或技师可能有0值.
我如何从查询中获得技术员姓名和放射科医生姓名.

解决方法

您将需要两次在users_reg表上JOIN以获得结果.一次是放射科医师,另一次是技术人员:
select ps.uid,ur1.name rad_name,ur1.type rad_type,ur2.name tech_name,ur2.type tech_type
from Patient_Study ps
left join Users_Reg ur1
  on ur1.User_ID=ps.Radiologist
left join Users_Reg ur2
  on ur2.User_ID=ps.Technician;

请参阅SQL Fiddle with Demo.这将返回所有患者研究的放射科医师和技术人员姓名/类型.如果要替换任何列中的null,则可以使用类似于以下内容的COALESCE:

select ps.uid,coalesce(ur1.name,'') rad_name,coalesce(ur1.type,'') rad_type,coalesce(ur2.name,'') tech_name,coalesce(ur2.type,'') tech_type
from Patient_Study ps
left join Users_Reg ur1
  on ur1.User_ID=ps.Radiologist
left join Users_Reg ur2
  on ur2.User_ID=ps.Technician;

见SQL Fiddle with Demo

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读