背景:在最近的工作中遇到 LEFT JOIN 表没有得到预期数据的问题,经过排查原因竟然是表字段默认为NULL导致的。
用navicat新建两张表,ltable_null,rtable_null。建表都默认为null。
插入测试数据如下
执行一下SQL,发现没有得到我们想要的数据。
SELECT a.name2,a.name3,b.datas FROM Ltable_null a
LEFT JOIN Rtable_null b on a.name2=b.name2 AND a.name3=b.name3
为了得到我们想要的数据,现在我们更新表的默认值,把null改为''
UPDATE ltable_null SET name3='' WHERE name2='zhushi';
UPDATE rtable_null SET name3='' WHERE name2='zhushi';
再次执行之前的查询SQL,得到我们想要的数据
为了解决这种问题,建议在建表时选择EMPTY STRING,或者遇到此类问题将数据update 为 ''