嵌套SELECT查询关联获取phone字段返回null问题求助
你当前遇到的子查询返回NULL主要有两类诱因:
- 匹配
orders.uid的users记录不存在,或者存在但users.login等于ExpressCheckoutUser,不满足筛选条件,子查询无匹配结果返回NULL - 存在完全符合筛选条件的
users记录,但该记录的phone字段本身存储值为NULL
建议把关联子查询改为LEFT JOIN写法,逻辑更清晰,同时能避免子查询返回多行时触发的语法报错,修正后的代码如下:
SELECT o.`oid`, o.`shipping_name`, u.`phone` FROM `orders` o LEFT JOIN `users` u ON o.`uid` = u.`uid` AND u.`login` != 'ExpressCheckoutUser' WHERE o.`smsStatus` = '0' ORDER BY o.`oid` DESC
如果需要将NULL的phone替换为自定义默认值,可以使用COALESCE函数处理,示例如下:
SELECT o.`oid`, o.`shipping_name`, COALESCE(u.`phone`, '无预留手机号') AS `phone` FROM `orders` o LEFT JOIN `users` u ON o.`uid` = u.`uid` AND u.`login` != 'ExpressCheckoutUser' WHERE o.`smsStatus` = '0' ORDER BY o.`oid` DESC
内容的提问来源于stack exchange,提问作者winfred adrah
相关产品推荐
相关产品推荐

