日期:2014-05-17  浏览次数:20685 次

请教关于联合查询的语句
有两张表,通过联合查询得到查询数据,但如果另一张表中的数据删除和修改,那么查询结果的修改出就显示不出来,如何才能然修改后查询结果的某个查不到数据段显示“未定义”。
可能说的不是很清楚,上图打个比方吧
表Name:
表Type:
sql语句:select Name,TypeName from Name,Type where Name.TypeId=Type.TypeId
得到结果:

此时如果把表Type中TypeId的3改为4,或者删除,查询的结果就变成了
 
我想让dd也显示,但是在typename这里显示个“未定义”,请问能否做到
SQL select 联合查询

------解决方案--------------------

select n.Name,
TypeName=case when t.TypeName IS NULL then '未定义' else t.TypeName end
from Name n
LEFT JOIN [Type] t
on n.TypeID=t.TypeID

/*
Name    TypeName
aa 猫
bb 猫
cc 狗
dd 未定义
*/

------解决方案--------------------
如果两边的数据都要是用FULL OUTER JOIN