CTE stands for Common Table Expression, it's a feature in SQL that allows you to define a temporary result set that you can refer to within the context of a single SELECT, INSERT, UPDATE, or DELETE statement.
CTEs are similar to subqueries but are defined using the WITH clause and can be self-referencing and can be used multiple times in the same query.
The basic syntax for a CTE is as follows:
WITH table_expression_name (column1, column2, ...) AS ( SELECT ... ) SELECT ... FROM table_expression_name
Where table_expression_name is the reference name.
Key differences between Temporary Tables and CTEs
|Syntax||WITH clause||CREATE TEMPORARY TABLE statement|
|Scope||Only visible to the query in which they are defined||Visible to the current session|
|Lifetime||Only available for the duration of the query||Remain in the database until they are explicitly dropped or the session ends|
|Persistence||Not persistent, results not stored in the database||Stored in the database and its result can be used by multiple queries or even different sessions|
|Recursive CTEs||Supported||Not Supported|
|Speed (depending on the size of data)||CTEs|
WITH top_selling_products (product, sales) AS ( SELECT product, SUM(quantity) as sales FROM orders GROUP BY product ORDER BY sales DESC LIMIT 3 ) SELECT product, sales FROM top_selling_products;
In this example, the CTE top_selling_products is defined to return the top 3 products based on total sales. The final statement retrieves the product and sales.
Overall, CTEs can help simplify complex queries and improve readability and maintainability of your code. They also help to avoid repetitive code, and can improve the performance of your queries by reducing the need for subqueries.
Top comments (0)