Swiftorial Logo
Home
Swift Lessons
Matchups
CodeSnaps
Tutorials
Career
Resources

Subqueries in PostgreSQL

1. Introduction

Subqueries, or nested queries, are queries within queries. They allow you to perform complex data retrieval operations in PostgreSQL by using the result of one query to filter or manipulate another query.

Note: Subqueries can return zero or more rows and can be used in SELECT, INSERT, UPDATE, or DELETE statements.

2. Types of Subqueries

  • Single-row subqueries
  • Multiple-row subqueries
  • Correlated subqueries

3. Syntax and Examples

3.1 Single-row Subquery

This type of subquery returns a single value. Here's an example:

SELECT name 
FROM employees 
WHERE salary = (SELECT MAX(salary) FROM employees);

3.2 Multiple-row Subquery

Multiple-row subqueries return multiple values. You can use the IN clause for such subqueries:

SELECT name 
FROM employees 
WHERE department_id IN (SELECT id FROM departments WHERE location_id = 1000);

3.3 Correlated Subquery

Correlated subqueries reference columns from the outer query. Here's a simple example:

SELECT e1.name 
FROM employees e1 
WHERE e1.salary > (SELECT AVG(salary) FROM employees e2 WHERE e1.department_id = e2.department_id);

4. Best Practices

  • Use subqueries when they simplify the logic of your queries.
  • Avoid unnecessary correlated subqueries for performance reasons.
  • Consider using JOINs instead of subqueries when dealing with large datasets.
  • Use EXISTS instead of IN for correlated subqueries when appropriate.

5. FAQ

What is a subquery?

A subquery is a query nested within another SQL query that provides a result set for the outer query.

When should I use subqueries?

Subqueries are useful when you need to filter results based on another query's results.

Can subqueries be used in UPDATE statements?

Yes, subqueries can be used in UPDATE statements to modify data based on complex conditions.