- /*原因是where条件那里筛去了未连接上的数据,就是left join 变成join了。where条件那里使用对照表的lx筛选本意是想获取不同类型的对照数据(如证件类型对照、地址行政区划对照)拿来做左连接。但没连接上的对照表类型值都是null,又怎么经得起lx=某类型的筛选呢?
- 真实业务场景中由于某个字段经常缺数,加上需要对照转换的字段比较多,所以一条数据都出不来。
- 这种情况还是老老实实拆分成证件类型对照表、地址行政区划对照表这样不同的对照表。或者筛选lx=类型那里加多一个 or is null。*/
- CREATE VIEW V_ZB AS
- SELECT ZB.ID,ZB.NAME,LX1.A_DM DM1,LX2.A_DM DM2 FROM ZB
- LEFT JOIN DZB LX1 ON ZB.B_DM1=LX1.B_DM
- LEFT JOIN DZB LX2 ON ZB.B_DM2 = LX2.B_DM
- WHERE (LX1.LX='lx1' OR LX1.LX IS NULL)
- AND (LX2.LX='lx2' OR LX2.LX IS NULL);