下面是表格结构(邀请表): –
id user_id doc_name discussion_topic invited_friends accepted_invitation
1 1 IEP Form-1.docx first topic 2,3,4 NULL
现在:
当我查询时: –
SELECT * from invite WHERE (FIND_IN_SET(2,invited_friends) > 0)
我完美地记录了这个记录(如上所示).
但是当我这样做时:
SELECT * from invite WHERE (FIND_IN_SET(2,invited_friends) > 0) AND (FIND_IN_SET(2,accepted_invitation) =0)
我没有得到上述记录,也没有任何错误.
当我这样做时:
SELECT * from invite WHERE user_id <>1 AND (FIND_IN_SET(2,invited_friends) > 0) AND (FIND_IN_SET(2,accepted_invitation) =0)
我再次没有得到上述记录,也没有任何错误.
实际上,我必须检查给定id(示例2)不等于user_id并且必须在invite_friends中(从不为null)而不在accepted_invitation中(scenario_invitation将为null或分隔的id值).
解决方法:
使用IFNULL
作为列名:
SELECT *
FROM invite
WHERE user_id <> 1 AND
(FIND_IN_SET(2, IFNULL(invited_friends, 0)) > 0) AND
(FIND_IN_SET(2, IFNULL(accepted_invitation, 0)) = 0);
检查sql小提琴:http://sqlfiddle.com/#!9/98d95/9
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。