CodeIgniter Active Record:使用 NOT IN 子查询执行 SELECT 查询
在这种情况下,您希望从 ' 检索所有行'revokace' 表中不存在的 certs' 表。此查询的传统 SQL 语法为:
SELECT * FROM certs WHERE id NOT IN (SELECT id_cer FROM revokace);
要使用 CodeIgniter 的 Active Record 模式实现此目的,您可以利用 '->where()' 方法。但是,处理查询中特殊字符的潜在冲突非常重要。
解决方案:
CodeIgniter 的 '->where()' 方法方便地支持传递自定义查询字符串直接存入数据库。这允许您将查询编写为:
$this->db->select('*') ->from('certs') ->where('`id` NOT IN (SELECT `id_cer` FROM `revokace`)', NULL, FALSE);
在此查询中,“NULL,FALSE”参数确保 CodeIgniter 不会执行任何转义,从而保留子查询的完整性。
可选替代方案:
为了进一步优化代码,请考虑使用 CodeIgniter子查询库。它通过提供专用接口简化了子查询的创建。使用子查询库的查询将如下所示:
$this->db->select('*') ->from('certs'); $sub = $this->subquery->start_subquery('where_in') ->select('id_cer') ->from('revokace'); $this->subquery->end_subquery('id', FALSE);
以上是如何使用 CodeIgniter Active Record 执行带有 NOT IN 子查询的 SELECT 查询?的详细内容。更多信息请关注PHP中文网其他相关文章!