下面是表格结构(邀请表): –
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);