SQL获取唯一记录:存储过程中筛选PlanIsValid为1或NULL的记录
解决方案
没问题,我帮你调整查询语句,刚好能满足你保留PlanIsValid字段值为1或NULL的需求:
Select ui.ID, sp.PlanName, sp.PlanIsValid from Usersinfo ui left join SubscriptionPlan sp on ui.ID = sp.UserID WHERE sp.PlanIsValid = 1 OR sp.PlanIsValid IS NULL;
说明
因为你用的是左连接,当Usersinfo中的用户没有对应的SubscriptionPlan记录时,sp表的所有字段都会返回NULL,包括PlanIsValid。上面的WHERE条件会同时保留两种情况:
- 存在订阅计划且
PlanIsValid为1的记录 - 没有匹配订阅计划(即
PlanIsValid为NULL)的用户记录
这个写法是标准SQL,在大多数数据库(比如MySQL、SQL Server、PostgreSQL)里都能正常运行。
内容的提问来源于stack exchange,提问作者shami sheikh
相关产品推荐
相关产品推荐

