SQLServer EXISTS CLAUSE
Get all customers with a least one order
SELECT * FROM Customer WHERE EXISTS (
SELECT * FROM Order WHERE Order.CustomerId=Customer.Id
)
Get all customers with no order
SELECT * FROM Customer WHERE NOT EXISTS (
SELECT * FROM Order WHERE Order.CustomerId = Customer.Id
)
Purpose
EXISTS, IN and JOIN could sometime be used for the same result, however, they are not equals :
.EXISTS should be used to check if a value exist in another table
.IN should be used for static list
.JOIN should be used to retrieve data from other(s) table(s)