Latest web development tutorials

SQLite subquery

Subquery atau query bersarang atau query internal tertanam dalam query klausa WHERE dalam permintaan SQLite lain.

Penggunaan sub-query mengembalikan data akan digunakan dalam query utama sebagai syarat untuk lebih membatasi data yang akan diambil.

Subqueries dapat digunakan dengan SELECT, INSERT, UPDATE, dan DELETE bisa disertai dengan operator digunakan seperti =, <,>,> =, <=, IN, ANTARA suka.

Berikut ini adalah beberapa aturan subquery yang harus diikuti:

  • Subqueries harus diapit tanda kurung.

  • Sub-query klausa SELECT hanya dapat memiliki satu kolom, kecuali beberapa kolom dalam query utama, perbandingan kolom subquery yang dipilih.

  • ORDER BY tidak dapat digunakan dalam subquery, meskipun permintaan utama dapat menggunakan ORDER BY. Anda dapat menggunakan GROUP BY di subqueries, berfungsi sama seperti ORDER BY.

  • lebih dari satu baris, hanya dapat digunakan kembali subquery dengan operator multi-nilai, seperti operator IN.

  • ANTARA Operator tidak dapat digunakan dengan sub-query, bagaimanapun, ANTARA dapat digunakan dalam subqueries.

SELECT subquery

Subquery biasanya digunakan dengan pernyataan SELECT. Sintaks dasar adalah sebagai berikut:

SELECT nama_kolom [, column_name]
DARI table1 [, table2]
MANA column_name OPERATOR
      (SELECT column_name [, column_name]
      DARI table1 [, table2]
      [MANA])

contoh

meja PERUSAHAAN Misalkan memiliki catatan berikut:

ID NAMA UMUR ALAMAT GAJI
---------- ---------- ---------- ---------- ----------
1 Paul 32 California 20.000,0
2 Allen 25 Texas 15.000,0
3 Teddy 23 Norwegia 20.000,0
4 Mark 25 Rich-Mond 65.000,0
5 David 27 Texas 85.000,0
6 Kim 22 South-Hall 45.000,0
7 James 24 Houston 10.000,0

Sekarang, mari kita memeriksa pernyataan subquery SELECT:

sqlite> SELECT * 
     DARI PERUSAHAAN 
     WHERE ID IN (SELECT ID 
                  DARI PERUSAHAAN 
                  MANA GAJI> 45000);

Ini menghasilkan hasil sebagai berikut:

ID NAMA UMUR ALAMAT GAJI
---------- ---------- ---------- ---------- ----------
4 Mark 25 Rich-Mond 65.000,0
5 David 27 Texas 85.000,0

INSERT pernyataan subquery

Subqueries juga dapat digunakan dengan pernyataan INSERT. Pernyataan INSERT menggunakan subquery untuk mengembalikan data ke meja lain. Di sub-query data yang dipilih dapat karakter apapun, tanggal, atau modifikasi fungsi numerik.

Sintaks dasar adalah sebagai berikut:

INSERT INTO table_name [(column1 [, column2])]
           SELECT [* | column1 [, column2]
           DARI table1 [, table2]
           [MANA VALUE OPERATOR]

contoh

Misalkan COMPANY_BKP PERUSAHAAN struktur tabel dan serupa, dan dapat menggunakan CREATE TABLE yang sama untuk membuat, hanya mengubah nama COMPANY_BKP meja. Sekarang salin seluruh tabel PERUSAHAAN ke COMPANY_BKP, sintaks adalah sebagai berikut:

sqlite> INSERT INTO COMPANY_BKP
     SELECT * DARI PERUSAHAAN 
     WHERE ID IN (SELECT ID 
                  DARI PERUSAHAAN);

UPDATE pernyataan subquery

Subqueries dapat digunakan dengan pernyataan UPDATE. Bila menggunakan pernyataan UPDATE subquery, kolom satu atau beberapa diperbarui dalam tabel.

Sintaks dasar adalah sebagai berikut:

tabel UPDATE
SET column_name = new_value
[MANA OPERATOR [VALUE]
   (SELECT COLUMN_NAME
   DARI TABLE_NAME)
   [MANA)]

contoh

Misalkan kita memiliki COMPANY_BKP meja, meja PERUSAHAAN cadangan.

Contoh berikut tabel PERUSAHAAN semua AGE dari atau sama dengan 27 klien GAJI diperbarui asli 0.50 kali lipat:

sqlite> PERUSAHAAN UPDATE
     SET GAJI = GAJI * 0.50
     MANA USIA DI (SELECT UMUR DARI COMPANY_BKP
                   MANA AGE> = 27);

Hal ini akan mempengaruhi dua baris catatan PERUSAHAAN terakhir dalam tabel sebagai berikut:

ID NAMA UMUR ALAMAT GAJI
---------- ---------- ---------- ---------- ----------
1 Paul 32 California 10.000,0
2 Allen 25 Texas 15.000,0
3 Teddy 23 Norwegia 20.000,0
4 Mark 25 Rich-Mond 65.000,0
5 David 27 Texas 42.500,0
6 Kim 22 South-Hall 45.000,0
7 James 24 Houston 10.000,0

Pernyataan DELETE subquery

Subqueries dapat digunakan dengan pernyataan DELETE, seperti laporan lain seperti yang disebutkan di atas.

Sintaks dasar adalah sebagai berikut:

DELETE FROM TABLE_NAME
[MANA OPERATOR [VALUE]
   (SELECT COLUMN_NAME
   DARI TABLE_NAME)
   [MANA)]

contoh

Misalkan kita memiliki COMPANY_BKP meja, meja PERUSAHAAN cadangan.

Contoh berikut menghapus semua catatan pelanggan yang lebih besar dari atau sama AGE 27 meja PERUSAHAAN:

sqlite> DELETE DARI PERUSAHAAN
     MANA USIA DI (SELECT UMUR DARI COMPANY_BKP
                   MANA AGE> 27);

Hal ini akan mempengaruhi dua baris catatan PERUSAHAAN terakhir dalam tabel sebagai berikut:

ID NAMA UMUR ALAMAT GAJI
---------- ---------- ---------- ---------- ----------
2 Allen 25 Texas 15.000,0
3 Teddy 23 Norwegia 20.000,0
4 Mark 25 Rich-Mond 65.000,0
5 David 27 Texas 42.500,0
6 Kim 22 South-Hall 45.000,0
7 James 24 Houston 10.000,0