我们有一个查询在WHERE上有三个“IN”子句,第一个是按字符串过滤而另外两个是按id过滤。
第一个声明如下:
AND some_table.town_field IN ('Gotham')
另外两个看起来像这样:
AND (some_table.id_field IN(3251, 2531, 5123, [and around 50 more]))
现在我们遇到的错误是,虽然我们有5条带有“town”=“Gotham”的记录,但如果我们将第一个IN子句改为:
,MySql只返回3 AND some_table.town_field IN ('Gotham', '')
效果很好!这是没有意义的,如果我们将第二个和第三个“in”修剪为只有这个记录id并删除其他ID,它也运行良好...我查看了MySql日志并且没有记录任何错误,所以它绝对不是MAX_ALLOWED_PACKET问题。