SQL not exists

Created By: chatGPT

NOT EXISTS is a logical operator in SQL that is used to ensure that no rows are returned by a subquery. It is commonly used in conjunction with the WHERE clause to filter results based on the absence of a condition. Using NOT EXISTS can be beneficial for ensuring data integrity and preventing duplicates in your results.
SELECT column_name
FROM table_name
WHERE NOT EXISTS (
    SELECT *
    FROM other_table
    WHERE other_table.column_name = table_name.column_name
);
To illustrate the use of NOT EXISTS, imagine we have two tables: students and enrolled_courses. We want to select students who are not enrolled in any courses. This can be done by checking for students who do not have any corresponding entries in the enrolled_courses table.
SELECT student_id, student_name
FROM students s
WHERE NOT EXISTS (
    SELECT *
    FROM enrolled_courses ec
    WHERE ec.student_id = s.student_id
);
Another example could involve filtering out employees who do not have any assigned projects from the employees and projects tables. Here’s how you can write the query for that:
SELECT employee_id, employee_name
FROM employees e
WHERE NOT EXISTS (
    SELECT *
    FROM projects p
    WHERE p.employee_id = e.employee_id
);
In practice, using NOT EXISTS can improve query performance by allowing the SQL engine to stop processing once it finds a matching row in the subquery, unlike LEFT JOIN, where all rows are returned and need to be filtered out afterward.
SELECT product_id, product_name
FROM products p
WHERE NOT EXISTS (
    SELECT *
    FROM orders o
    WHERE o.product_id = p.product_id
);
Introduction And SetupSelectFromWhereJoinInner JoinLeft JoinRight JoinFull JoinOnGroup ByHavingOrder ByLimitInsert IntoValuesUpdateSetDeleteCreate TableAlter TableDrop TableCreate IndexDrop IndexUnionUnion AllIntersectExceptCaseWhenThenElseEndInBetweenLikeIs NullIs Not NullExistsNot ExistsAndOrNotAsWithDistinctCountSumAvgMinMaxCastCoalesceNullifSubstringConcatLowerUpperTrimReplaceRoundFloorCeilAbsModCurrent_dateCurrent_timeCurrent_timestamp