mysql 查询缺失的数据

一开始是通过 member_id 来查询数据的,另一张表里记录着用户的信息。
一天 用户表的这条信息丢失了。生成的一个 openID 一样但是主键不一样的数据。
但是下图的数据还是这样写入的 我现在如何通过 mp_id 和 openID 还查询这个用户的正常数据呢。

图片描述

上图看到的数据 openID 一栏都有部分数据是缺失的 
现在**只想通过 mp_id 和 openID 查询图中全部数据** 该如何完成这个sql 查询呢 
求大神写思路
SELECT * FROM `score_log` WHERE `mp_id` = 'gh_1d3037ae656c' 
AND `openid` = 'o5NHFsy-PUHxY7G_h_S8UscpKVg8' 

阅读 3.6k
3 个回答

没读懂题,你不是有结果了吗?

openid是空的,也要包含在结果中?

如果 openid 只是空字符串

SELECT * FROM `score_log` WHERE `mp_id` = 'gh_1d3037ae656c' 
AND `openid` in ('o5NHFsy-PUHxY7G_h_S8UscpKVg8', '');

如果 openid 只是 null

SELECT * FROM `score_log` WHERE `mp_id` = 'gh_1d3037ae656c' 
AND (`openid` = 'o5NHFsy-PUHxY7G_h_S8UscpKVg8' OR openid is null);

如你所说需要 mp_id 和 openID 作为条件查询,那么应当任意一个条件不能满足记录的唯一性,否则只需要满足唯一性的条件即可,那么数据缺失即无解,得到的记录只能少于应有记录。换个角度,弄清业务规则,是否能补全缺失数据,或者以其他作为能唯一决定用户记录的条件来查询。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题