【发布时间】:2009-11-20 16:26:27
【问题描述】:
这是我的表格的一个子集:
orders:
- order_id
- customer_id
order_products:
- order_id
- order_product_id (unique key)
- canceled
我想为给定的客户 (customer_id) 选择所有订单 (order_id),其中订单中的所有产品都被取消,而不仅仅是部分产品。有没有比这更优雅或更有效的方法:
select order_id from orders
where order_id in (
select order_id from orders
inner join order_products on orders.order_id = order_products.order_id
where order_products.customer_id = 1234 and order_products.canceled = 1
)
and order_id not in (
select order_id from orders
inner join order_products on orders.order_id = order_products.order_id
where order_products.customer_id = 1234 and order_products.canceled = 0
)
【问题讨论】:
-
你使用的是什么数据库引擎,即mysql、sql-server-2000、sql-server-2005、Oracle等
标签: sql database query-optimization