EXISTS 条款

客户表

ID 名字
1 ÖzgUr OZTURK
2 优素福 MEDI
3 亨利

订单表

ID 顾客 ID
1 2 123.50
2 3 14.80

为所有客户提供至少一个订单

SELECT * FROM Customer WHERE EXISTS (
    SELECT * FROM Order WHERE Order.CustomerId=Customer.Id
)

结果

ID 名字
2 优素福 MEDI
3 亨利

让所有客户无需订购

SELECT * FROM Customer WHERE NOT EXISTS (
    SELECT * FROM Order WHERE Order.CustomerId = Customer.Id
)

结果

ID 名字
1 ÖzgUr OZTURK

目的

EXISTSINJOIN 有时会用于相同的结果,但是,它们不等于:

  • EXISTS 应该用于检查另一个表中是否存在值
  • IN 应该用于静态列表
  • 应使用 JOIN 从其他(s)表中检索数据