SQLite
 sql >> Teknologi Basis Data >  >> RDS >> SQLite

SQLite ADA

Ringkasan :dalam tutorial ini, Anda akan belajar bagaimana menggunakan SQLite EXISTS operator untuk menguji keberadaan baris yang dikembalikan oleh subquery.

Pengantar SQLite EXISTS operator

EXISTS operator adalah operator logika yang memeriksa apakah subquery mengembalikan baris apa pun.

Berikut adalah sintaks dasar dari EXISTS operator:

EXISTS(subquery)
Code language: SQL (Structured Query Language) (sql)

Dalam sintaks ini, subquery adalah SELECT pernyataan yang mengembalikan nol atau lebih baris.

Jika subquery mengembalikan satu atau lebih baris, EXISTS operator mengembalikan benar. Jika tidak, kode EXISTS operator mengembalikan false atau NULL .

Perhatikan bahwa jika subquery mengembalikan satu baris dengan NULL , hasil dari EXISTS operator masih benar karena set hasil berisi satu baris dengan NULL.

Untuk meniadakan EXISTS operator, Anda menggunakan NOT EXISTS operator sebagai berikut:

NOT EXISTS (subquery)Code language: SQL (Structured Query Language) (sql)

NOT EXISTS operator mengembalikan nilai true jika subquery tidak mengembalikan baris.

SQLite EXISTS contoh operator

Lihat Customers berikut ini dan Invoices tabel dari database sampel:

Pernyataan berikut menemukan pelanggan yang memiliki faktur:

SELECT
    CustomerId,
    FirstName,
    LastName,
    Company
FROM
    Customers c
WHERE
    EXISTS (
        SELECT 
            1 
        FROM 
            Invoices
        WHERE 
            CustomerId = c.CustomerId
    )
ORDER BY
    FirstName,
    LastName; 
Code language: SQL (Structured Query Language) (sql)

Gambar berikut menunjukkan kumpulan hasil parsial:

Dalam contoh ini, untuk setiap pelanggan, kode EXISTS operator memeriksa apakah id pelanggan ada di invoices tabel.

  • Jika ya, subquery mengembalikan satu baris dengan nilai 1 yang menyebabkan EXISTS operator mengevaluasi menjadi benar. Oleh karena itu, kueri menyertakan pelanggan dalam kumpulan hasil.
  • Jika id pelanggan tidak ada di Invoices tabel, subquery tidak mengembalikan baris yang menyebabkan EXISTS operator untuk mengevaluasi ke false, maka kueri tidak menyertakan pelanggan dalam kumpulan hasil.

Perhatikan bahwa Anda dapat menggunakan IN operator alih-alih EXISTS operator dalam hal ini untuk mencapai hasil yang sama:

SELECT
   CustomerId, 
   FirstName, 
   LastName, 
   Company
FROM
   Customers c
WHERE
   CustomerId IN (
      SELECT
         CustomerId
      FROM
         Invoices
   )
ORDER BY
   FirstName, 
   LastName;Code language: SQL (Structured Query Language) (sql)

Setelah subquery mengembalikan baris pertama, EXISTS operator berhenti mencari karena dapat menentukan hasilnya. Di sisi lain, IN operator harus memindai semua baris yang dikembalikan oleh subquery untuk menentukan hasilnya.

Secara umum, EXISTS operator lebih cepat dari IN operator jika set hasil yang dikembalikan oleh subquery besar. Sebaliknya, IN operator lebih cepat dari EXISTS operator jika set hasil yang dikembalikan oleh subquery kecil.

SQLite NOT EXISTS contoh operator

Lihat tabel Artis dan Album berikut dari database sampel:

Kueri ini menemukan semua artis yang tidak memiliki album di tabel Album:

SELECT
   *
FROM
   Artists a
WHERE
   NOT EXISTS(
      SELECT
         1
      FROM
         Albums
      WHERE
         ArtistId = a.ArtistId
   )
ORDER BY Name;Code language: SQL (Structured Query Language) (sql)

Berikut adalah sebagian outputnya:

Dalam tutorial ini, Anda telah mempelajari cara menggunakan SQLite EXISTS operator untuk menguji keberadaan baris yang dikembalikan oleh subquery.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dapatkan ID baris dari tabel SQLite FTS3

  2. Ruang Android - Cara menghapus sqlite_sequence untuk semua tabel

  3. <expr> diharapkan, mengerti '?'

  4. Kurangi Hari dari Tanggal di SQLite

  5. SQLite Node.js