【发布时间】:2015-07-31 16:02:31
【问题描述】:
我有以下数组
$exclude = array(1 => array(1,2,3,4), 2 => array(1,2,3,4));
当密钥验证时,我需要排除内部数组中的值。我不确定我应该使用CASE 还是只使用AND 和OR。
这是我尝试的开始,但我遗漏了一些东西,因为这不能按预期工作。我将查询附加到 WHERE 子句的末尾,所以这是我唯一的部分可以访问。
foreach($exclude as $blogID => $post_ids) {
$ids = implode(',', $post_ids);
if($blogID == 1) {
$where .= " AND table.BLOG_ID = {$blogID} AND table.ID NOT IN ($ids)";
} else {
$where .= " OR table.BLOG_ID = {$blogID} AND table.ID NOT IN ($ids)";
}
}
【问题讨论】:
-
打印sql查询看看有什么问题
-
MySQL 不太擅长优化像这样的复杂
AND/OR组合。最好为每一对生成一个查询,并将它们与UNION结合起来。
标签: php mysql arrays case where