一开始是通过 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'
2 回答
侃侃尔雅
TA贡献1801条经验 获得超16个赞
如果 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);
侃侃无极
TA贡献2051条经验 获得超10个赞
如你所说需要 mp_id 和 openID 作为条件查询,那么应当任意一个条件不能满足记录的唯一性,否则只需要满足唯一性的条件即可,那么数据缺失即无解,得到的记录只能少于应有记录。换个角度,弄清业务规则,是否能补全缺失数据,或者以其他作为能唯一决定用户记录的条件来查询。
添加回答
举报
0/150
提交
取消