今天有这样一个需求,读取一个公司的直辖工程师(公司内部的工程师)和外协工程师(公司的服务商的工程师)
【这里使用的是MySQL】
【工程师都在engineer表中,所有的该机构的直辖工程师也都在此表中 ,该机构的外协工程师在other_engineer表中,《这个表中包含了该工程师的所属机构eg_org_id 和该工程师是哪个服务商下的工程师org_id》】
查询的时候,获取直辖和外协的工程师,LEFT JOIN关联这两张表
默认查询 eg_org_id为空和非空的,(条件查询的时候,如果查直辖的话 即为eg_org_id 为空的 ,外协的话 即为eg_org_id为非空的)
查询条件中 如果 eg_org_id 为空是查询直辖 ,其值默认为1 。否则的话为2,查询的是外协。。。。关联code表,查出直辖和外协的字段值(工程师表里保存的工程师类型是数字)
也就是说查询的条件为 if(条件,条件符合的值,条件不符合的值)
ISNULL的使用:
1、如果为空返回0
select ifnull(null,0)
2、如果为空返回0,否则返回1
select if(isnull(col),0,1)
IFNULL(expr1,expr2)
如果expr1不是NULL,IFNULL()返回expr1,否则它返回expr2。I
IF(expr1,expr2,expr3)
如果expr1是TRUE(expr1<>0且expr1<>NULL),那么IF()返回expr2,否则它返回expr3。