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

目的

EXISTS,IN 和 JOIN 有时会用于相同的结果,但是,它们不等于:

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