微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 单个查询中的两个FIND_IN_SET无效

下面是表格结构(邀请表): –

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值).

我在最后两次查询中犯了什么错误

注意:我在PHPmyadmin中直接使用这些查询

解决方法:

使用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 举报,一经查实,本站将立刻删除。

相关推荐