Я предполагаю, что вы знаете, что они делают, и, следовательно, используются по-разному, поэтому я пойму ваш вопрос следующим образом: Когда было бы хорошей идеей переписать SQL-код, чтобы использовать IN вместо EXISTS, или наоборот? наоборот.
Это справедливое предположение?
Редактировать : причина, по которой я спрашиваю, состоит в том, что во многих случаях вы можете переписать SQL на основе IN, чтобы вместо него использовать EXISTS, и наоборот, а для некоторых механизмов баз данных оптимизатор запросов будет относиться к ним по-разному.
Например:
SELECT *
FROM Customers
WHERE EXISTS (
SELECT *
FROM Orders
WHERE Orders.CustomerID = Customers.ID
)
можно переписать на:
SELECT *
FROM Customers
WHERE ID IN (
SELECT CustomerID
FROM Orders
)
или с объединением:
SELECT Customers.*
FROM Customers
INNER JOIN Orders ON Customers.ID = Orders.CustomerID
Таким образом, мой вопрос остается в силе, будет ли оригинальный постер интересоваться тем, что делает IN и EXISTS, и, таким образом, как его использовать, или он попросит, переписать ли SQL с использованием IN вместо EXISTS, или наоборот, будет хорошая идея?