首頁 >後端開發 >php教程 >如何使用 CodeIgniter Active Record 執行帶有 NOT IN 子查詢的 SELECT 查詢?

如何使用 CodeIgniter Active Record 執行帶有 NOT IN 子查詢的 SELECT 查詢?

Barbara Streisand
Barbara Streisand原創
2024-11-26 11:35:11518瀏覽

How to Execute a SELECT Query with a NOT IN Subquery using CodeIgniter Active Record?

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn