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中文網其他相關文章!