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感觉这样查询好像不对 你想要的结果是什么俄
declare @gy table (ID int,ID_MODIFY int) insert into @gy select 1,null insert into @gy select 1,2 declare @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.IDID NAME 2 张
有两个 工艺表,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 select TN_PROCESS_PLANING.ID,isnull(USERS.NAME,'') name from TN_PROCESS_PLANING left join USERS on TN_PROCESS_PLANING.ID_MODIFY = USERS.ID
select TN_PROCESS_PLANING.ID,isnull(USERS.NAME,null) from TN_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 但不知道会不会出现笛卡尔积这种情况
我想象四楼说的这样 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 吧。
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感觉这样查询好像不对 你想要的结果是什么俄
insert into @gy select 1,null
insert into @gy select 1,2
declare @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.IDID NAME
2 张
工艺表,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
select TN_PROCESS_PLANING.ID,isnull(USERS.NAME,'') name from
TN_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
但不知道会不会出现笛卡尔积这种情况
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 吧。