-
我用不等于条件查"未完成"的订单,结果一批 status 为 NULL 的订单全被漏掉了、数量怎么都对不上,我对着 SQL 的三值逻辑排查了大半天的复盘
我用 WHERE status != 'done' 查所有未完成订单,对账却数量对不上——所有被漏掉的订单 status 都是 NULL。NULL 明明不等于 done,为什么 != 'done' 没把它们选出来?深挖才懂是 SQL 的三值逻辑:NULL 表示"未知",拿它和任何值比较(=、!=、>、甚至 = NULL)结果都不是 …- 0
- 0
-
一条 WHERE status != '已退订' 的查询,漏掉了三万个该发邮件的用户:我被 SQL 里 NULL 的三值逻辑坑到背锅的那次群发事故复盘
营销群发,规则是给所有'没退订'的用户发,我写了 WHERE status != '已退订',结果名单比预期少了整整三万人。这三万人有个共同点:status 是 NULL(老系统迁移来、从没设置过)。根因是 SQL 的三值逻辑——NULL 代表'未知',任何与 NULL 的比较(含 !=)结果都是 UNKNOWN,而 WHERE 只保留 …- 0
- 0
三值逻辑
幸运之星正在降临...
点击领取今天的签到奖励!
恭喜!您今天获得了{{mission.data.mission.credit}}积分
我的优惠劵
-
¥优惠劵使用时效:无法使用使用时效:
之前
使用时效:永久有效优惠劵ID:×
没有优惠劵可用!


