Postgresql's USING Clause on DELETE Statement

cd .. || cd

June 1, 2023 · 1 mins · Robertus Chris

Table of Contents

A Brief Intro

The USING clause on DELETE statement is basically let us join multiple table and delete only the data from those join.

If you ever use mysql DELETE JOIN with INNER JOIN, then postgresql USING is kind of similar to that except it can only delete from one table by default.

How?

How to do that? Here’s an example:
Let’s say we have table A and table B which is referenced to table C by id. If we use SELECT statement on table C with INNER JOIN on table A, it would look like this:

SELECT *
FROM C
INNER JOIN A
ON A.C_id = C.id;

Now, if we want to only delete all records from table C related to table A without deleting all records from table C related to table B, we can use DELETE with USING clause like this:

DELETE
FROM C
USING A
WHERE A.C_id = C.id;

Please keep in mind that if you haven’t set the ON DELETE CASCADE for table A on reference C_id, that query will throw an error.

Alright, that’s it. See you next time!

References