Calculating... until our next FREE Code-Along Session. Secure your spot now

MySQL Delete Join (Easy To Understand Guide)

Ryan Forrester
Jul 3rd, 2024

MySQL DELETE JOIN: A Comprehensive and Easy-to-Understand Guide

Managing and maintaining databases often involves deleting records. Sometimes, you need to delete records in one table based on criteria in another related table. This is where MySQL DELETE JOIN comes in handy. This guide will provide you with a clear understanding of how to use MySQL DELETE JOIN, with practical examples and best practices to make this feature easy to understand and apply.


In MySQL, the DELETE statement is typically used to remove records from a single table. However, when you need to delete records from one table based on related records in another table, you can use the DELETE statement in conjunction with a JOIN clause. This allows for more complex deletions that ensure data integrity across related tables.


Using DELETE JOIN is beneficial for:

  • Maintaining Data Integrity: Ensuring that related data in different tables is consistently managed.
  • Simplifying Complex Deletions: Performing deletions that would be cumbersome with multiple DELETE statements.
  • Improving Performance: Reducing the number of operations by combining multiple deletions into a single statement.

Basic Syntax of MySQL DELETE JOIN

The basic syntax for using DELETE with JOIN in MySQL is as follows:

DELETE t1 FROM table1 t1
JOIN table2 t2 ON t1.column = t2.column
WHERE condition;

Practical Examples

Let’s explore some practical examples to understand how to use MySQL DELETE JOIN.

Example 1: Deleting Records Based on Related Table

Consider two tables, orders and customers, where you want to delete orders for customers who no longer exist in the customers table.

Table: orders


Table: customers

101John Smith
102Jane Doe

Delete Statement:

DELETE orders FROM orders
LEFT JOIN customers ON orders.customer_id = customers.customer_id
WHERE customers.customer_id IS NULL;



The order with order_id 3 is deleted because the customer with customer_id 103 no longer exists in the customers table.

Example 2: Conditional DELETE with JOIN

Suppose you want to delete products from a products table that have not been ordered in the last year from an order_items table.

Table: products

1Widget A
2Widget B
3Widget C

Table: order_items


Delete Statement:

DELETE p FROM products p
LEFT JOIN order_items oi ON p.product_id = oi.product_id
LEFT JOIN orders o ON oi.order_id = o.order_id
WHERE o.order_date < DATE_SUB(CURDATE(), INTERVAL 1 YEAR) OR o.order_date IS NULL;


1Widget A
2Widget B

The product with product_id 3 is deleted because it has not been ordered in the last year or never ordered at all.


Managing and maintaining databases often involves deleting records, especially when you need to clean up related records across tables. MySQL DELETE JOIN is an efficient way to perform these operations.

However, knowing SQL queries is just the beginning. Building a complete and functional web application involves much more. Rapid application builders like Five allow you to use custom code, including DELETE JOIN, while also providing features like a visual query builder. This tool lets you construct complex queries with simple drag-and-drop actions, making it easier to visualize relationships and join tables. Unlike many other drag-and-drop application builders that limit customization, Five offers the best of both worlds.

By combining DELETE JOIN and other SQL queries with the capabilities of Five, you can effortlessly build, test, and deploy data-driven applications.

Five provides you with your own MySQL database, on which you can build a fully responsive web application. Alternatively, you can connect your SQL Server or SQLite database and build your application on your existing database.

You can create forms, charts, reports, and more based on your database, allowing you to spend less time switching between tools and more time developing robust applications.

Need to extend your application’s functionality? Five allows you to write custom JavaScript and TypeScript functions. This flexibility ensures that you can implement complex business logic and tailor your application to meet specific needs.

Once your application is ready, Five makes deployment easy. You can deploy your application to a secure, scalable cloud infrastructure with just a few clicks, allowing you to focus on development without worrying about the complexities of cloud deployment.

If you’re serious about working with SQL, give Five a try. Sign up for free access to Five’s development environment and start building your next web application today.

Build Your Web App in 4 Steps
Bring/Create Your Own Database and Start Developing

A Real-World Example: Deleting Unsubscribed Users’ Data

Consider a scenario where you need to clean up user data for those who have unsubscribed from your service. You have three tables: users, subscriptions, and user_data.

Table: users


Table: subscriptions


Table: user_data


Delete Statement:

DELETE ud FROM user_data ud
JOIN users u ON ud.user_id = u.user_id
LEFT JOIN subscriptions s ON u.user_id = s.user_id
WHERE u.subscribed = 'N' AND s.subscription_id IS NULL;



In this example, the user data for unsubscribed users who have no active subscriptions is deleted.

Best Practices for Using DELETE JOIN

  1. Backup Your Data: Before performing any delete operations, especially those involving multiple tables, ensure you have a backup of your data to prevent accidental data loss.
  2. Test Deletes: Always test your DELETE statements on a subset of data or a staging environment before running them on your production database.
  3. Use Transactions: When performing complex deletions, use transactions to ensure that your deletes are atomic and can be rolled back if something goes wrong.
  4. Optimize JOIN Conditions: Ensure that the columns used in the JOIN conditions are indexed to optimize performance and avoid long-running queries.
  5. Be Specific with Conditions: Use WHERE clauses to limit the scope of your deletions and avoid unintentional modifications.

Advanced Usage: Multiple JOINs in DELETE

In some scenarios, you might need to delete records based on relationships with multiple other tables. MySQL allows you to use multiple JOINs in a DELETE statement.


DELETE e FROM employees e
JOIN departments d ON e.department_id = d.department_id
JOIN locations l ON d.location_id = l.location_id
WHERE = 'San Francisco';

In this example, we are deleting employees working in San Francisco by joining the employees, departments, and locations tables.


Using DELETE with JOIN in MySQL is a powerful technique for maintaining data consistency and performing complex deletions across related tables. By understanding the syntax and practical applications of this feature, you can enhance your database management skills and ensure your data remains accurate and up-to-date.

Remember to follow best practices, such as backing up your data, testing deletions, and using transactions, to safeguard your data integrity. With these tools and tips, you’ll be well-equipped to handle any delete scenarios involving multiple tables in MySQL.

Start developing your first application!

Get Started For Free Today

Sign Up Free Book a demo
Develop your first application with Five now. Start Free

Thank you for your message!

Our friendly staff will contact you shortly.