有两个
工艺表,TN_PROCESS_PLANING(ID int,ID_MODIFY int),工艺id号和工艺修改人id
人员表 USERS(ID int,NAME char(20)),人员id,人员名称
当 工艺还没有人修改时,ID_MODIFY值为null
当我想查询工艺表id,以及工艺修改人的姓名时
select TN_PROCESS_PLANING.ID,USERS.NAME from TN_PROCESS_PLANING,USERS where TN_PROCESS_PLANING.ID_MODIFY = USERS.ID
如果某个工艺的修改人为空时,那么这条工艺就被过滤掉了
怎么让这个工艺还出现,而把修改人置为空值就行了
------解决方案--------------------
改用left join 可以的,1楼理解错了
------解决方案--------------------
- SQL code
declare @gy table (ID int,ID_MODIFY int)insert into @gy select 1,nullinsert into @gy select 1,2declare @user table(ID int,NAME char(20))insert into @user select 1,'李'insert into @user select 2,'张'select b.* from (select * from @gy where id_modify is not null) a, @user b where a.ID_MODIFY = b.ID
------解决方案--------------------
有两个
工艺表,TN_PROCESS_PLANING(ID int,ID_MODIFY int),工艺id号和工艺修改人id
人员表 USERS(ID int,NAME char(20)),人员id,人员名称
当 工艺还没有人修改时,ID_MODIFY值为null
当我想查询工艺表id,以及工艺修改人的姓名时
select TN_PROCESS_PLANING.ID,USERS.NAME from TN_PROCESS_PLANING,USERS where TN_PROCESS_PLANING.ID_MODIFY = USERS.ID
如果某个工艺的修改人为空时,那么这条工艺就被过滤掉了
怎么让这个工艺还出现,而把修改人置为空值就行了
--确实理解错了,不好意思.使用left join , isnull(col , '') col
- SQL code
select TN_PROCESS_PLANING.ID,isnull(USERS.NAME,'') name fromTN_PROCESS_PLANING left join USERS on TN_PROCESS_PLANING.ID_MODIFY = USERS.ID
------解决方案--------------------
我想象四楼说的这样
select TN_PROCESS_PLANING.ID,USERS.NAME from TN_PROCESS_PLANING,USERS where TN_PROCESS_PLANING.ID_MODIFY = USERS.ID or TN_PROCESS_PLANING.ID_MODIFY=null
但不知道会不会出现笛卡尔积这种情况
---------------------------------------------------
会出现局部的笛卡儿积现象。
也就是NULL的会和所有的记录配对。
还是用isnull() 和left join 吧。