Dear readers of our blog, we'd like to recommend you to visit the main page of our website, where you can learn about our product SQLS*Plus and its advantages.
 
SQLS*Plus - best SQL Server command line reporting and automation tool! SQLS*Plus is several orders of magnitude better than SQL Server sqlcmd and osql command line tools.
 

REQUEST COMPLIMENTARY SQLS*PLUS LICENCE

Enteros UpBeat offers a patented database performance management SaaS platform. It proactively identifies root causes of complex revenue-impacting database performance issues across a growing number of RDBMS, NoSQL, and deep/machine learning database platforms. We support Oracle, SQL Server, IBM DB2, MongoDB, Casandra, MySQL, Amazon Aurora, and other database systems.

SQL EXISTS condition

7 July 2020

The SQL EXISTS clause

SQL EXISTS condition is used in combination with a subquery and is considered satisfied if the subquery returns at least one line. It can be used in the SELECT, INSERT, UPDATE or DELETE operator.

Syntax of EXISTS condition in SQL

WHERE EXISTS ( subquery_id );

where:

  • subquery_id – the subquery is a SELECT operator. If a subquery returns at least one entry in its result set, the EXISTS offer is evaluated as true and the EXISTS condition is met. If the subquery does not return any record, the EXISTS sentence is evaluated as false and the EXISTS condition is not met.

Note:
SQL statements using the EXISTS condition are very inefficient because the subquery is re-run for EVERY line in the external query table. There are more efficient ways to write most queries that do not use the EXISTS condition.

Using the EXISTS Condition with the SELECT Operator

Let us start with an example that shows how to use the EXISTS condition with a SELECT operator.

In this example we have a table with the following data:

ord_idcustom_idord_date
170002019/06/18
250002019/06/18
380002019/06/19
440002019/06/20
5NULL2019/07/01

 

And the table with the following data:

ord_idcustom_idord_date
170002019/06/18
250002019/06/18
380002019/06/19
440002019/06/20
5NULL2019/07/01

 

Now let’s find all the records from the customers table, where there is at least one record in the orders table with the same custom_id. Perform the following SELECT query:

SELECT *
FROM customs
WHERE EXISTS
(SELECT *
FROM ords
WHERE customs.custom_id = ords.custom_id);

Four entries will be selected. Here are the results that you should get:

custom_idf_namel_namefav_website
4000JustinBiebergoogle.com
5000SelenaGomezbing.com
7000TomCruiseoracle.com
8000JohnnyDeppNULL

 

In this example, there are 4 entries in the customers table that have the value custom_id in the orders table.

EXISTS condition with UPDATE operator

Let’s look at an example where the EXISTS condition in the UPDATE operator is used.

In this example we have a product table with the following data:

prod_idprod_namecat_id
1Pear50
2Banana50
3Orange50
4Apple50
5Bread75
6Sliced Ham25
7KleenexNULL

 

And a table named sum_data with the following data:

prod_idcurrent_cat
110
210
310
410
510

 

Now let’s update the sum_data table with values from the products table. Enter the following SQL statement:

UPDATE sum_data
SET current_cat = (SELECT cat_id)
FROM prods
WHERE prods.prod_id = sum_data.prod_id)
WHERE EXISTS (SELECT cat_id)
FROM prods
WHERE prods.prod_id = sum_data.prod_id);

5 records will be updated. Select data from sum_data table again:

SELECT *
FROM sum_data;

Here are the results you’ll get:

prod_idcurrent_cat
150
250
350
450
575
810

 

In this example, the current_cat field in the sum_data table will be updated with cat_id data from the products table where prod_id values match. The first 5 records in the sum_data table were updated.

Tip: If we did not enable EXISTS condition, UPDATE query would update current_category field to NULL in the 6th row of summary_data table (because products table has no record where product_id = 8).

EXISTS Condition with DELETE Operator

Let’s look at an example that uses the EXISTS condition in the DELETE operator.

In this example, we have a table with the following data:

custom_idf_namel_namefav_website
4000JustinBiebergoogle.com
5000SelenaGomezbing.com
6000 MilaKunisyahoo.com
7000TomCruiseoracle.com
8000JohnnyDeppNULL
9000RussellCrowegoogle.com

 

And the table with the following data:

ord_idcustom_idord_date
170002019/06/18
250002019/06/18
380002019/06/19
440002019/06/20
5NULL2019/07/01

 

Enter the following DELETE operator:

DELETE FROM ords
WHERE EXISTS
(SELECT *
FROM customs
WHERE customs.custom_id = ords.custom_id
AND customs.l_name = ‘Bieber’);

1 record will be deleted. Select the data from the order table again:

SELECT * FROM ords;

here are the results you should get:

ord_idcustom_idord_date
170002019/06/18
250002019/06/18
380002019/06/19
5NULL2019/07/01

 

This example removes all records from the order table, where the customer table has a record with l_name “Bieber” and the same custom_id value in both tables. In this example the record for ord_id = 4 has been deleted.

NOT with EXISTS condition

Finally, the NOT condition can be combined with the EXISTS condition to create the NOT EXISTS condition. Let’s look at an example which shows how to use the NOT EXISTS condition in SQL.

In this example we have a table with the following data:

custom_idf_namel_namefav_website
4000JustinBiebergoogle.com
5000SelenaGomezbing.com
6000 MilaKunisyahoo.com
7000TomCruiseoracle.com
8000JohnnyDeppNULL
9000RussellCrowegoogle.com

 

And the table with the following data:

ord_idcustom_idord_date
170002019/06/18
250002019/06/18
380002019/06/19
440002019/06/20
5NULL2019/07/01

 

Enter the following SQL statement:

SELECT *
FROM customs
WHERE DOES NOT EXIST
(SELECT *
FROM ords
WHERE customs.custom_id = ords.custom_id);

Two entries will be selected. Here are the results that you will get:

custom_idf_namel_namefav_website
6000 MilaKunisyahoo.com
9000RussellCrowegoogle.com

 

This example will return all entries from the customs table where there are no entries in the ords table for this custom_id.

The SQL EXISTS clause

 
Tags: , , , , , ,

MORE NEWS

 

Preamble​​NoSql is not a replacement for SQL databases but is a valid alternative for many situations where standard SQL is not the best approach for...

Preamble​​MongoDB Conditional operators specify a condition to which the value of the document field shall correspond.Comparison Query Operators $eq...

5 Database management trends impacting database administrationIn the realm of database management systems, moreover half (52%) of your competitors feel...

The data type is defined as the type of data that any column or variable can store in MS SQL Server. What is the data type? When you create any table or...

Preamble​​MS SQL Server is a client-server architecture. MS SQL Server process starts with the client application sending a query.SQL Server accepts,...

First the basics: what is the master/slave?One database server (“master”) responds and can do anything. A lot of other database servers store copies of all...

Preamble​​Atom Hopper (based on Apache Abdera) for those who may not know is an open-source project sponsored by Rackspace. Today we will figure out how to...

Preamble​​MongoDB recently introduced its new aggregation structure. This structure provides a simpler solution for calculating aggregated values rather...

FlexibilityOne of the most advertised features of MongoDB is its flexibility.  Flexibility, however, is a double-edged sword. More flexibility means more...

Preamble​​SQLShell is a cross-platform command-line tool for SQL, similar to psql for PostgreSQL or MySQL command-line tool for MySQL.Why use it?If you...

Preamble​​Writing an application on top of the framework on top of the driver on top of the database is a bit like a game on the phone: you say “insert...

Preamble​​Oracle Coherence is a distributed cache that is functionally comparable with Memcached. In addition to the basic function of the API cache, it...

Preamble​​IBM pureXML, a proprietary XML database built on a relational mechanism (designed for puns) that offers both relational ( SQL / XML ) and...

  What is PostgreSQL array? In PostgreSQL we can define a column as an array of valid data types. The data type can be built-in, custom or enumerated....

Preamble​​If you are a Linux sysadmin or developer, there comes a time when you need to manage an Oracle database that can work in your environment.In this...

Preamble​​Starting with Microsoft SQL Server 2008, by default, the group of local administrators is no longer added to SQL Server administrators during the...