Ya, WITH AS ialah pernyataan pertanyaan yang biasa digunakan dalam MySQL, digunakan untuk mencipta jadual sementara dan menggunakannya dalam pertanyaan seterusnya. Di bawah ini kami memperkenalkan penggunaan dan aplikasi praktikal WITH AS secara terperinci.
WITH as sintaks terutamanya dibahagikan kepada dua bahagian berikut:
1) WITH: kata kunci, digunakan untuk memperkenalkan atau Berbilang jadual sementara.
2) AS: kata kunci, digunakan untuk mentakrifkan satu atau lebih jadual sementara. Sintaks umum
WITH as pernyataan adalah seperti berikut:
WITH [RECURSIVE] cte_name (column_name1,column_name2,...) AS
(
subquery1
UNION [SEMUA]
subquery2
UNION [SEMUA]
subquery3
...
)
PILIH *
DARI cte_name;
di mana,
nama_cte: nama jadual sementara;
nama_lajur1, nama_lajur2,...: nama lajur dalam jadual sementara; .
Aplikasi praktikal WITH sebagai1) Pertanyaan rekursif
WITH as statement boleh melakukan pertanyaan rekursif untuk mendapatkan set hasil dengan struktur hierarki. Berikut mengambil jadual pekerja sebagai contoh untuk menggambarkan:
DENGAN RECURSIVE emp AS (
PILIH emp_id, emp_name, emp_manager_id DARIPADA pekerja
DI MANA emp_manager_id ADALAH NULL
UNIT 🎜 > PILIH e2.emp_id, e2.emp_name, e2.emp_manager_id
DARIPADA pekerja e2
DALAM SERTAI emp DI e2.emp_manager_id = emp.emp_id
)
PILIH * DARI emp;Dalam pernyataan di atas, bahagian asas pertanyaan rekursif ialah mencari nod akar dalam jadual (iaitu, pekerja tanpa pengurus Dalam setiap lelaran rekursif, subkueri jadual mencari subordinat setiap nod sekali gus). dan menambahnya kepada hasilnya.
2) Susun set keputusan
PILIH p.product_id, p.product_name, s.sale_id, s.sale_date, s.quantity, s . harga
DARI produk pINNER JOIN sales s ON p.product_id = s.product_id
), inventori AS ( PILIH p.product_id, p.product_name, i.inventory_id, i.quantity
DARI produk p
INNER JOIN inventori i ON p.product_id = i.product_id
)
SELECT s.sale_id, s.sale_date, s.product_id, s.product_name, s.quantity, s . harga, i.inventori_id, i.kuantiti sebagai inventori_kuantiti
DARI jualan s
INNER JOIN inventori i ON s.product_id = i.product_id;
Dalam pernyataan di atas, kami mula-mula mentakrifkan jualan dan Inventori dua jadual sementara, dan kemudian lakukan pertanyaan bersama pada kedua-dua jadual ini untuk mengeluarkan set hasil. Set hasil ini mengandungi maklumat jualan daripada jadual jualan dan maklumat inventori daripada jadual inventori.
3) Pengoptimuman subquery
PILIH order_id
DARI pesananDI MANA tarikh_pesanan > '2022-01-01'
)PILIH *
FROM order_details
WHERE order_id IN (SELECT order_id FROM ord);
Dalam pernyataan di atas, kami mula-mula mentakrifkan jadual sementara atau untuk menyimpan maklumat pesanan keperluan. Kemudian dalam pertanyaan berikutnya, gunakan terus pernyataan WHERE order_id IN (SELECT order_id FROM ord) untuk menanyakan butiran pesanan. Ini bukan sahaja meningkatkan kecekapan pertanyaan, tetapi juga meningkatkan kebolehbacaan dan kebolehselenggaraan kod.
Ringkasan:
Atas ialah kandungan terperinci Adakah terdapat apa-apa dengan sebagai mysql?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!