Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Ekspresi Tabel Umum di MySQL

Common Table Expressions (CTE) memungkinkan Anda dengan mudah menulis kueri SQL yang kompleks di MySQL. Pada artikel ini, kita akan melihat apa itu Common Table Expression di MySQL dan bagaimana menulis CTE di MySQL.


Apa itu Ekspresi Tabel Umum

Ekspresi Tabel Umum adalah kumpulan hasil bernama yang cakupannya terbatas pada kueri SQL di mana ia didefinisikan dan digunakan. Ini mirip dengan tabel turunan tetapi tidak disimpan sebagai objek dan dapat menjadi referensi sendiri, tidak seperti tabel turunan. Hasilnya, CTE memberikan kinerja yang lebih baik daripada tabel turunan di MySQL.

Bonus Baca :Cara Menghitung Margin di MySQL


Ekspresi Tabel Umum di MySQL

Berikut adalah sintaks ekspresi tabel umum di MySQL.

WITH cte_name (column_list) AS (     
      query 
)  
SELECT * FROM cte_name;

Dalam kueri di atas, Anda perlu menentukan nama CTE, kueri SQL yang hasilnya harus direferensikan menggunakan nama CTE. Harap diperhatikan, jumlah kolom di column_list harus sama dengan yang ada di kueri your .

Mari kita lihat contoh ekspresi tabel umum (CTE).

Bonus Baca :Cara Mendapatkan Produk Terlaris Menggunakan SQL Query

Katakanlah Anda memiliki penjualan(id, tanggal_pesanan, jumlah) tabel.

mysql> create table sales(id int, order_date date, amount int);

mysql> insert into sales(id, order_date, amount)
      values(1, '2021-01-01', 200),
      (2, '2021-01-02', 250),
      (3, '2021-01-03', 220),
      (4, '2021-01-04', 230),
      (5, '2021-01-05', 210),
      (6, '2021-01-06', 100),
      (7, '2021-01-07', 120),
      (8, '2021-01-08', 150),
      (9, '2021-01-09', 180),
      (10, '2021-01-10', 200);

 mysql> select * from sales;
 +------+------------+--------+
 | id   | order_date | amount |
 +------+------------+--------+
 |    1 | 2021-01-01 |    200 |
 |    2 | 2021-01-02 |    250 |
 |    3 | 2021-01-03 |    220 |
 |    4 | 2021-01-04 |    230 |
 |    5 | 2021-01-05 |    210 |
 |    6 | 2021-01-06 |    100 |
 |    7 | 2021-01-07 |    120 |
 |    8 | 2021-01-08 |    150 |
 |    9 | 2021-01-09 |    180 |
 |   10 | 2021-01-10 |    200 |
 +------+------------+--------+

Berikut adalah CTE untuk memilih hanya catatan penjualan yang memiliki jumlah>200.

with test_cte as (
     select id,order_date,amount from sales
     where amount>200
 ) select * from test_cte; 

 +------+------------+--------+
 | id   | order_date | amount |
 +------+------------+--------+
 |    1 | 2021-01-01 |    200 |
 |    2 | 2021-01-02 |    250 |
 |    3 | 2021-01-03 |    220 |
 |    4 | 2021-01-04 |    230 |
 |    5 | 2021-01-05 |    210 |
 |   10 | 2021-01-10 |    200 |
 +------+------------+--------+

Dalam CTE di atas, kami menentukan kueri SELECT untuk memfilter baris dengan jumlah>200 di dalam klausa WITH.

Bonus Baca :Cara Menggunakan pernyataan CASE di MySQL

Harap dicatat, Anda dapat menggunakan CTE dengan pernyataan SELECT, UPDATE, INSERT dan DELETE. Berikut adalah sintaks untuk hal yang sama.

WITH … SELECT …
WITH … UPDATE …
WITH … DELETE …

Juga, Anda dapat menggunakan CTE sebagai subquery, seperti yang ditunjukkan di bawah ini

SELECT … WHERE id IN (WITH … SELECT …);
SELECT * FROM (WITH … SELECT …) AS temporary_table;

Jika Anda menggunakan hasil dari pernyataan SELECT sebagai input untuk pernyataan CREATE/INSERT/REPLACE, maka Anda juga dapat menggunakan klausa WITH di dalamnya. Berikut beberapa contohnya,

CREATE TABLE … WITH … SELECT …
CREATE VIEW … WITH … SELECT …
INSERT … WITH … SELECT …
REPLACE … WITH … SELECT …
DECLARE CURSOR … WITH … SELECT …
EXPLAIN … WITH … SELECT …

Bonus baca :Dapatkan Banyak Hitungan dengan kondisi berbeda di MySQL


Ekspresi Tabel Umum di Ubiq

Alat Pelaporan Ubiq mendukung kueri SELECT berbasis CTE dan memudahkan untuk memvisualisasikan hasil SQL dengan cara yang berbeda. Ini juga memungkinkan Anda membuat dasbor &bagan dari hasil kueri MySQL. Berikut adalah kueri CTE di atas di Ubiq.

Bahkan, setelah Anda menjalankan kueri, Anda cukup mengeklik jenis visualisasi untuk memplot hasilnya dalam bagan.

Butuh alat pelaporan untuk MySQL? Ubiq memudahkan untuk memvisualisasikan data dalam hitungan menit, dan memantau di dasbor waktu nyata. Cobalah Hari ini!

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sintaks SQL TRUNCATE – Didaftarkan oleh DBMS

  2. Bagaimana cara mendapatkan ID terakhir yang dimasukkan dari tabel MySQL di PHP?

  3. Bagaimana cara menggunakan DATETIME sebagai DATE di mysql?

  4. mysql_fetch_row() vs mysql_fetch_assoc() vs mysql_fetch_array()

  5. Menutup Koneksi JDBC di Pool