- 1 1. Introduction
- 2 2. Basics of the WITH Clause (Common Table Expressions)
- 3 3. Basic Usage of the MySQL WITH Clause
- 4 4. Practical Examples of Recursive WITH Clauses
- 5 5. Vidokezo na Mambo ya Kuzingatia Unapotumia Clause ya WITH
- 6 6. Matumizi ya Kitaalamu katika Muktadha wa Maisha Halisi
- 7 7. Maswali Yanayoulizwa Mara kwa Mara (FAQ)
- 7.1 J1: Ni lini ninapaswa kutumia kifungu cha WITH?
- 7.2 J2: Ni lini CTE inayorudia (recursive) inakuwa na manufaa?
- 7.3 Swali la 3: Je, masuala yanayotumia kifungu cha WITH yanafaa zaidi kuliko maono?
- 7.4 Swali la 4: Nini husababisha kupungua kwa utendaji wakati wa kutumia kifungu cha WITH?
- 7.5 Swali la 5: Ni nini suluhisho mbadala kwa matoleo ya MySQL ambayo hayaungi mkono kifungu cha WITH?
- 7.6 Swali la 6: Ni nini mazoea bora wakati wa kutumia kifungu cha WITH?
- 8 8. Hitimisho
1. Introduction
MySQL ni mfumo wa usimamizi wa hifadhidata unaotumika sana na wasanidi programu na wasimamizi wa hifadhidata, unaotoa uwezo wa SQL wenye nguvu na unaobadilika. Kati ya sifa zake, clause ya WITH (Common Table Expression: CTE), iliyoanzishwa katika MySQL 8.0, ni chombo chenye nguvu kinachofanya maswali ya SQL yawe rahisi kusoma na kuboresha uwezo wa kudumisha.
Makala hii inaelezea clause ya WITH kutoka kwa misingi hadi matumizi ya juu, ikilenga watumiaji wa kiwango cha mwanzo hadi kati. Hasa, tunashughulikia mada za vitendo kama kubadilisha subqueries na kutekeleza maswali ya kurudiarudia.
Kwa wale wanaojifunza SQL au wanapokumbwa na kuboresha maswali katika kazi ya kila siku, makala hii inalenga kutoa suluhisho la wazi. Fuata maudhui hapa chini ili kuelewa misingi ya clause ya WITH na kuitumia katika hali halisi.
2. Basics of the WITH Clause (Common Table Expressions)
What Is the WITH Clause?
Clause ya WITH ni sintaksia inayotumika kufafanua seti ya matokeo ya muda (Common Table Expression, CTE) ndani ya swali la SQL na kuitaja katika maswali yanayofuata. Inasaidiwa kuanzia MySQL 8.0, inaruhusu subqueries ngumu kuandikwa upya kwa njia iliyo wazi na fupi.
Kwa mfano, wakati wa kuandika subqueries moja kwa moja, usomaji unaweza kupungua na swali lote linaweza kuwa refu. Kwa kutumia clause ya WITH, unaweza kugawanya maswali katika blok za kimantiki, na kuyafanya yawe rahisi kuelewa.
Basic Syntax of the WITH Clause
Hapo chini ni sintaksia ya msingi ya clause ya WITH:
WITH table_name AS (
SELECT column1, column2
FROM original_table
WHERE condition
)
SELECT column1, column2
FROM table_name;
Katika sintaksia hii, jedwali la virtual (Common Table Expression) linafafanuliwa baada ya WITH, kisha linatumiwa katika swali kuu. Hii inafanya subqueries zinazotumika mara kwa mara ziwe rahisi kuziweka kwa ufupi.
Differences from Subqueries and Views
Clause ya WITH inaunda seti ya matokeo inayopatikana kwa muda tu na inatofautisha na subqueries na views katika vipengele kadhaa.
| Feature | WITH Clause | Subquery | View |
|---|---|---|---|
| Scope | Valid only within the query | Usable only where defined | Reusable across the entire database |
| Persistence | Temporary | Temporary | Permanent |
| Purpose | Simplifies complex queries | Temporary data extraction | Frequently reused data extraction |
Clause ya WITH inasomwa zaidi kuliko subqueries na ni bora wakati hutahitaji kuunda kipengele cha kudumu kama view.
Benefits of Using the WITH Clause
- Uboreshaji wa Usomaji wa Maswali Hata wakati kuna subqueries nyingi, kuzipanga kwa clause ya WITH hubainisha muundo.
- Uboreshaji wa Urejeshaji Kwa kufafanua seti ya matokeo ya muda, inaweza kurejelewa mara nyingi ndani ya swali.
- Uboreshaji wa Kudumisha Kwa kuwa maswali yanaweza kugawanywa kimantiki, mabadiliko na upanuzi huwa rahisi.
3. Basic Usage of the MySQL WITH Clause
Replacing Subqueries
Clause ya WITH ni chombo chenye nguvu cha kurahisisha subqueries ngumu. Kuweka subqueries moja kwa moja kunaweza kufanya swali lote liwe tata na ngumu kusoma, lakini kutumia clause ya WITH huboresha usomaji.
Hapo chini ni mfano wa msingi wa kubadilisha subquery kwa kutumia clause ya WITH.
Using a Subquery:
SELECT AVG(sales.total) AS average_sales
FROM (
SELECT SUM(amount) AS total
FROM orders
GROUP BY customer_id
) AS sales;
Using the WITH Clause:
WITH sales AS (
SELECT SUM(amount) AS total
FROM orders
GROUP BY customer_id
)
SELECT AVG(sales.total) AS average_sales
FROM sales;
Katika mfano huu, seti ya matokeo ya muda iitwayo sales inafafanuliwa kwa kutumia clause ya WITH kisha inarejelewa katika swali kuu. Hii inafanya swali lote liwe rahisi kuelewa na limepangwa vizuri.
Defining Multiple Common Table Expressions (CTEs)
Clause ya WITH inaruhusu kufafanua CTEs nyingi. Hii inaruhusu kugawanya zaidi maswali magumu.
Example:
WITH
sales_per_customer AS (
SELECT customer_id, SUM(amount) AS total_sales
FROM orders
GROUP BY customer_id
),
high_value_customers AS (
SELECT customer_id
FROM sales_per_customer
WHERE total_sales > 10000
)
SELECT customer_id
FROM high_value_customers;
In this example, sales_per_customer calculates the total sales per customer, and based on that result, high_value_customers extracts customers with high purchase amounts. By using multiple CTEs sequentially, queries can be constructed step by step.
Using Nested CTEs
By using nested CTEs, you can perform more complex data operations.
Example:
WITH
sales_data AS (
SELECT product_id, SUM(amount) AS total_sales
FROM orders
GROUP BY product_id
),
ranked_sales AS (
SELECT product_id, total_sales,
RANK() OVER (ORDER BY total_sales DESC) AS rank
FROM sales_data
)
SELECT product_id, total_sales
FROM ranked_sales
WHERE rank <= 5;
In this query, sales_data aggregates sales per product, and ranked_sales assigns rankings based on sales volume. Finally, the top five products are extracted.
Key Points for Practical Usage
- Think in Logical Steps Build CTEs step by step to improve readability and make debugging easier.
- Store Intermediate Calculation Results Group calculation results or filtering conditions used multiple times into CTEs to reduce code duplication.
- Be Careful with Large Datasets Since CTEs generate temporary result sets, consider performance impact when working with large amounts of data.
4. Practical Examples of Recursive WITH Clauses
What Is a Recursive WITH Clause?
A recursive WITH clause (recursive CTE) is a method that uses a Common Table Expression to repeatedly execute a self-referencing query, enabling you to process hierarchical data and iterative calculations. Recursive CTEs are supported in MySQL 8.0 and later and are especially useful when working with parent-child relationships and hierarchical structures.
Basic Syntax of a Recursive CTE
To define a recursive CTE, use the WITH RECURSIVE keyword. The basic syntax is as follows:
WITH RECURSIVE recursive_table_name AS (
initial_query -- starting point of the recursion
UNION ALL
recursive_query -- query called recursively
)
SELECT * FROM recursive_table_name;
- Initial query : Retrieves the first dataset for the recursive process.
- Recursive query : Generates new rows based on the initial query or the previous iteration’s results.
- UNION ALL : Combines the results of the initial query and the recursive query.
Example: Processing Hierarchical Data
Recursive CTEs are often used to expand data with a hierarchical structure (e.g., organization trees or category trees).
Example: Expanding an employee management hierarchy
Consider the following employees table:
| employee_id | name | manager_id |
|---|---|---|
| 1 | Alice | NULL |
| 2 | Bob | 1 |
| 3 | Charlie | 1 |
| 4 | David | 2 |
Using this data, we can create a query that retrieves the full hierarchy starting from a given employee.
WITH RECURSIVE employee_hierarchy AS (
-- Initial query: get top-level employees
SELECT employee_id, name, manager_id, 1 AS level
FROM employees
WHERE manager_id IS NULL
UNION ALL
-- Recursive query: get direct reports
SELECT e.employee_id, e.name, e.manager_id, eh.level + 1
FROM employees e
INNER JOIN employee_hierarchy eh
ON e.manager_id = eh.employee_id
)
SELECT * FROM employee_hierarchy;
Result:
| employee_id | name | manager_id | level |
|---|---|---|---|
| 1 | Alice | NULL | 1 |
| 2 | Bob | 1 | 2 |
| 3 | Charlie | 1 | 2 |
| 4 | David | 2 | 3 |
In this query, subordinates are searched recursively based on manager_id, expanding the full hierarchy.
Limitations and Cautions for Recursive CTEs
- An End Condition Is Required If the recursive query does not meet an end condition, an infinite loop may occur. Always include appropriate conditions to prevent infinite recursion.
- Performance Impact Recursive CTEs can involve many calculations over large datasets, which may increase execution time. Use
LIMITclauses and filtering conditions to improve efficiency. - Recursion Depth Limits MySQL has a limit on recursion depth, so take care when running very deep recursive processing. This limit can be configured with the
max_recursive_iterationsparameter.
Mambo Ambapo CTE za Recursive Zinatumika
- Kusafiri muundo wa folda : Tafuta folda na folda ndogo kwa njia ya kurudiarudia.
- Kujenga michoro ya shirika : Onyesha hierarkia kutoka kwa wasimamizi hadi wafanyakazi.
- Kuonyesha miti ya kategoria : Pata kategoria za bidhaa zilizo katika hierarkia au muundo wa lebo.
CTE za Recursive ni njia yenye nguvu ya kuandika maswali ya SQL mafupi kwa ajili ya hali hizi huku zikiboresha usomaji.
5. Vidokezo na Mambo ya Kuzingatia Unapotumia Clause ya WITH
Athari za Utendaji na Uboreshaji
- Uhesabuji wa CTE Kwa ujumla, CTE iliyoelezwa kwa clause ya WITH inahesabiwa upya kila inapojitumiwa. Kwa hiyo, kutumia CTE ileile mara nyingi inaweza kuongeza muda wa utekelezaji wa swali. Mfano:
WITH sales AS ( SELECT product_id, SUM(amount) AS total_sales FROM orders GROUP BY product_id ) SELECT * FROM sales WHERE total_sales > 1000; SELECT COUNT(*) FROM sales;
Katika kesi hii hapo juu, sales inarejelea mara mbili, hivyo inahesabiwa mara mbili. Ili kuepuka hili, unapohitaji kurejelea matokeo mara nyingi, kuhifadhi matokeo katika jedwali la muda inaweza kuwa na ufanisi.
Suluhisho:
CREATE TEMPORARY TABLE temp_sales AS
SELECT product_id, SUM(amount) AS total_sales
FROM orders
GROUP BY product_id;
SELECT * FROM temp_sales WHERE total_sales > 1000;
SELECT COUNT(*) FROM temp_sales;
- Kugawanya CTE ngumu Ikiwa clause ya WITH inakuwa imepangwa sana ndani, swali lote linaweza kuwa ngumu na vigumu kutatua. Ni muhimu kugawanya mantiki ipasavyo ili usindikaji ndani ya CTE moja usiwe mgumu sana.
Kutumia Clause za WITH kwenye Seti za Data Kubwa
Clause ya WITH inaunda seti za data za muda wakati wa utekelezaji. Unaposhughulikia kiasi kikubwa cha data, hii inaweza kuweka mzigo kwenye kumbukumbu au hifadhi.
Hatua za Kukabiliana:
- Chuja Data kwa Clause za WHERE Punguza hesabu kwa kuchuja data isiyohitajika ndani ya CTE.
WITH filtered_orders AS ( SELECT * FROM orders WHERE order_date > '2023-01-01' ) SELECT customer_id, SUM(amount) FROM filtered_orders GROUP BY customer_id;
- Tumia Clause za LIMIT Ikiwa seti ya data ni kubwa, tumia
LIMITkuchukua tu data unayohitaji.
Ulinganifu wa Matoleo ya MySQL
Clause ya WITH katika MySQL inasaidiwa katika MySQL 8.0 na baadaye. Kwa kuwa matoleo ya awali hayaunga mkono clause ya WITH, unahitaji kuzingatia mbadala.
Mbadala:
- Tumia Subqueries Tumia subqueries moja kwa moja badala ya clause ya WITH.
SELECT AVG(total_sales) FROM ( SELECT customer_id, SUM(amount) AS total_sales FROM orders GROUP BY customer_id ) AS sales;
- Unda Views Ikiwa unahitaji maswali yanayoweza kutumika tena, kutumia view inaweza kuwa na ufanisi.
CREATE VIEW sales_view AS SELECT customer_id, SUM(amount) AS total_sales FROM orders GROUP BY customer_id; SELECT AVG(total_sales) FROM sales_view;
Jinsi ya Kutumia Clause ya WITH Kwa Usahihi
- Kipa Umuhimu Usomaji Lengo la clause ya WITH ni kupanga maswali na kuboresha usomaji. Kuijumlisha kupita kiasi kunaweza kufanya maswali kuwa magumu, hivyo iitumie tu inapohitajika.
- Thibitisha Utendaji Angalia mpango wa utekelezaji (amri ya
EXPLAIN) na fikiria jinsi ya kuboresha utendaji.EXPLAIN WITH sales AS ( SELECT product_id, SUM(amount) AS total_sales FROM orders GROUP BY product_id ) SELECT * FROM sales WHERE total_sales > 1000;
6. Matumizi ya Kitaalamu katika Muktadha wa Maisha Halisi
Kuunganisha Data ya Mauzo
Hapa kuna mfano wa kuunganisha data ya mauzo kwa mwezi kisha kutumia matokeo hayo kuhesabu wastani wa mauzo ya kila mwezi.
Mfano: Kuunganisha Mauzo ya Kila Mwezi na Kuhesabu Wastani
WITH monthly_sales AS (
SELECT
DATE_FORMAT(order_date, '%Y-%m') AS sales_month,
SUM(amount) AS total_sales
FROM orders
GROUP BY sales_month
)
SELECT
sales_month,
total_sales,
AVG(total_sales) OVER () AS average_sales
FROM monthly_sales;
In this query, monthly_sales calculates sales per month, and based on that result, the overall average sales are computed. This allows data to be organized clearly and simplifies analysis.
Kuchuja Data Kulingana na Masharti Maalum
Kwa kugawa mantiki tata ya kuchuja katika kifungu cha WITH, usomaji unaweza kuboreshwa.
Mfano: Kuunda Orodha ya Wateja Wanaotumia Mengi
WITH customer_totals AS (
SELECT
customer_id,
SUM(amount) AS total_spent
FROM orders
GROUP BY customer_id
)
SELECT
customer_id,
total_spent
FROM customer_totals
WHERE total_spent > 100000;
Katika hoja hii, customer_totals inahesabu jumla ya kiasi kilichonunuliwa kwa kila mteja, na wateja wanaokidhi sharti lililotajwa wanatolewa.
Kuchambua Data ya Kihierarkia
Wakati wa kuchambua data ya kihierarkia kama vile miundo ya shirika au makundi, vifungu vya WITH vinavyorudia (recursive) ni muhimu sana.
Mfano: Kupata Orodha ya Wafanyakazi Wenye Mamlaka ya Moja kwa Moja na Isiyo ya Moja kwa Moja
WITH RECURSIVE employee_hierarchy AS (
SELECT
employee_id,
name,
manager_id,
1 AS level
FROM employees
WHERE manager_id IS NULL
UNION ALL
SELECT
e.employee_id,
e.name,
e.manager_id,
eh.level + 1
FROM employees e
INNER JOIN employee_hierarchy eh
ON e.manager_id = eh.employee_id
)
SELECT
employee_id,
name,
manager_id,
level
FROM employee_hierarchy
ORDER BY level, manager_id;
Hoja hii inajenga data ya kihierarkia katika employee_hierarchy na inarejesha wafanyakazi waliogawanywa kwa ngazi. Inaruhusu uzalishaji wa taarifa za aina ya mchoro wa shirika kwa njia ya kimoduli.
Uchambuzi wa Juu Kutumia CTEs Nyingi
Kwa kutumia vifungu vingi vya WITH, data inaweza kuchakatwa hatua kwa hatua, na kufanya uchambuzi tata kuwa rahisi.
Mfano: Kuchuja Bidhaa Zinauza Zaidi Kila Kategoria
WITH category_sales AS (
SELECT
category_id,
product_id,
SUM(amount) AS total_sales
FROM orders
GROUP BY category_id, product_id
),
ranked_sales AS (
SELECT
category_id,
product_id,
total_sales,
RANK() OVER (PARTITION BY category_id ORDER BY total_sales DESC) AS rank
FROM category_sales
)
SELECT
category_id,
product_id,
total_sales
FROM ranked_sales
WHERE rank <= 3;
Katika hoja hii, mauzo kwa kila kategoria yanahesabiwa, na bidhaa tatu bora ndani ya kila kategoria zinatolewa. Mbinu hii ni yenye ufanisi wakati wa kupunguza data kulingana na masharti maalum.
Vidokezo Muhimu kwa Matumizi ya Kitaalamu
- Buni Hoja katika Hatua za Kimantiki Tumia kifungu cha WITH kugawanya hoja na kuchakata data hatua kwa hatua huku ukidumisha usomaji.
- Tolewa Data Inayohitajika Tu Tumia vifungu vya WHERE na LIMIT kuepuka kuchakata data isiyo ya lazima na kubuni hoja zenye ufanisi.
- Matumizi ya Biashara Yanayobadilika Kifungu cha WITH kinaweza kutumika kwa ubunifu katika uchambuzi wa mauzo, ugawanyaji wa wateja, usimamizi wa hesabu, na mengineyo.

7. Maswali Yanayoulizwa Mara kwa Mara (FAQ)
J1: Ni lini ninapaswa kutumia kifungu cha WITH?
J1:
Kifungu cha WITH ni muhimu hasa katika hali zifuatazo:
- Unapohitaji kurahisisha subqueries tata.
- Unapohitaji kutumia tena seti ya data ile ile mara kadhaa ndani ya hoja.
- Unapohitaji kugawa hoja kimantiki ili kuboresha usomaji.
Kwa mfano, katika hoja zinazotumia matokeo ya muunganiko sawa mara kadhaa, kifungu cha WITH huruhusu upangaji bora zaidi.
J2: Ni lini CTE inayorudia (recursive) inakuwa na manufaa?
J2:
CTEs zinazorudia ni muhimu wakati wa kushughulikia miundo ya kihierarkia au mahesabu ya kurudia. Hasa:
- Kuchakata data ya kihierarkia (kwa mfano, miti ya shirika, miundo ya kategoria).
- Kuonyesha hierarchies za folda au faili.
- Mahesabu ya mlolongo wa nambari au vipindi vya muda (kwa mfano, kuhesabu mlolongo wa Fibonacci).
Kutumia CTEs zinazorudia hufanya iwe rahisi kupanua na kuchakata data inayojirejelea.
Swali la 3: Je, masuala yanayotumia kifungu cha WITH yanafaa zaidi kuliko maono?
Jibu la 3:
Inategemea kesi ya matumizi.
- Kifungu cha WITH : Inatengeneza seti ya matokeo ya muda mfupi inayotumiwa tu ndani ya swali. Inafaa kwa data ambayo haitaji kutumika mara kwa mara.
- Muono : Imehifadhiwa kudumu katika hifadhi ya data na inaweza kutumika tena na masuala mengine. Inafaa kwa masuala yanayotumiwa mara kwa mara.
Ni muhimu kuchagua njia inayofaa kulingana na hali.
Swali la 4: Nini husababisha kupungua kwa utendaji wakati wa kutumia kifungu cha WITH?
Jibu la 4:
Sababu kuu za kupungua kwa utendaji wakati wa kutumia kifungu cha WITH ni pamoja na:
- Hesabu upya ya CTE : Matokeo huhisabiwa upya kila wakati yanapotajwa, na hivyo kuongeza wakati wa uchakataji.
- Kushughulikia seti kubwa za data : Kuzalisha seti kubwa za data ndani ya CTE huongeza matumizi ya kumbukumbu na kupunguza utendaji.
- Ukosefu wa kuweka alama sahihi : Ikiwa masuala ndani ya CTE hayatumi alama sahihi, utendaji unaweza kupungua.
Hatua za kukabiliana:
- Fikiria majedwali ya muda au maono ikiwa mara ya kutumia upya ni nyingi.
- Tumia vifungu vya WHERE na LIMIT ili kupunguza data vizuri.
Swali la 5: Ni nini suluhisho mbadala kwa matoleo ya MySQL ambayo hayaungi mkono kifungu cha WITH?
Jibu la 5:
Katika matoleo ya awali ya MySQL 8.0, kifungu cha WITH hakinaungwa mkono, kwa hivyo tumia suluhisho zifuatazo:
- Tumia Masuala Madogo Tumia masuala madogo moja kwa moja badala ya kifungu cha WITH.
SELECT AVG(total_sales) FROM ( SELECT customer_id, SUM(amount) AS total_sales FROM orders GROUP BY customer_id ) AS sales;
- Tumia Majedwali ya Muda Hifadhi seti za data zinazoweza kutumika tena katika jedwali la muda.
CREATE TEMPORARY TABLE temp_sales AS SELECT customer_id, SUM(amount) AS total_sales FROM orders GROUP BY customer_id; SELECT AVG(total_sales) FROM temp_sales;
Swali la 6: Ni nini mazoea bora wakati wa kutumia kifungu cha WITH?
Jibu la 6:
Weka mazoea bora yafuatayo akilini:
- Weka kipaumbele kwa unyenyekevu : Usilazimishe mantiki ngumu katika kifungu kimoja cha WITH. Igawanye vizuri.
- Thibitisha utendaji : Angalia mpango wa utekelezaji ukitumia amri ya
EXPLAINna uboreshe kama ni muhimu. - Fikiria uwezekano wa kutumia upya : Ikiwa mara ya kutumia upya ni nyingi, tumia maono au majedwali ya muda.
8. Hitimisho
Makala hii imeshughulikia kifungu cha WITH (Common Table Expression, CTE) kilichoanzishwa katika MySQL 8.0, kutoka misingi hadi matumizi ya hali ya juu. Kifungu cha WITH ni kipengele muhimu sana kwa kufanya masuala magumu kuwa mafupi na rahisi kusomwa. Hapo chini ni mambo muhimu ya kukumbuka.
Faida Kuu za Kifungu cha WITH
- Uboreshaji wa Urahisi wa Kusoma Swali Inapanga masuala madogo magumu, na hivyo kuboresha uwezo wa kusoma na kudumisha msimbo wa SQL.
- Uwezekano wa Kutumia Upya Swali Inachakata data kwa ufanisi wakati wa kurejelea seti sawa mara nyingi.
- Inaruhusu Shughuli za Data za Kurudia CTE za kurudia hurahisisha uchakataji wa data ya tabaka na hesabu za kurudia.
Mambo Muhimu ya Matumizi ya Vitendo
- Inafaa kwa uchambuzi wa data ya mauzo na wateja , inayowezesha mkusanyiko wa hatua kwa hatua.
- CTE za kurudia ni bora kwa uchakataji wa data ya tabaka (kama chati za shirika au miundo ya jamii).
- Kuchanganya vifungu vya WITH na maono au majedwali ya muda kunaruhusu shughuli za hifadhi ya data zenye unyumbufu na ufanisi.
Mazingatio Muhimu
- Kifungu cha WITH ni chenye nguvu, lakini matumizi yasiyofaa yanaweza kupunguza utendaji.
- Thibitisha uwezekano wa kutumia upya na utendaji kila kesi, na uchague kati ya maono au majedwali ya muda inapohitajika.
- Daima thibitisha ufanisi wa swali ukitumia mpango wa utekelezaji (amri ya
EXPLAIN).
Hatua za Kufuata
Kwa kutumia kifungu cha WITH, unaweza kuunda masuala ya SQL yenye ufanisi zaidi na rahisi kudumisha. Jaribu kuyatumia katika miradi yako ya kweli kwa kufuata hatua hizi:
- Anza na masuala rahisi na fanya mazoezi ya kuyapanga ukitumia kifungu cha WITH.
- Jaribu CTE za kurudia kwa data ya tabaka na hali ngumu.
- Lenga uboreshaji wa utendaji ili kuboresha zaidi ustadi wako wa SQL.
Hii inamalizia makala. Tumia ujuzi wako wa kifungu cha MySQL WITH katika kazi yako ya kila siku na masomo.


