MySQL:如果所有项目都处于就绪状态,则选择仅订单

时间:2013-03-22 03:35:37

标签: mysql select subquery

我会像这样简化表格:

table order:
order_id | name
1          a
2          b
3          c

Table order_item:
item_id | fk_order_id | status
1         1             0
2         1             1
3         2             1
4         2             1
5         3             0

就绪状态让我们说是1,所以只有order_id = 2的所有项目都处于就绪状态。

如何查询选择它?

2 个答案:

答案 0 :(得分:0)

试试这个: SELECT order_id,name FROM order,order_item WHERE order.order_id = order_item.fk_order_id 按order_id分组,名称有min(status)= 1

答案 1 :(得分:0)

有几种方法可以做到这一点 - 这里有一个使用COUNT - 获得所有COUNT并与状态= 1的COUNT进行比较:

SELECT fk_order_id
FROM (
  SELECT fk_order_id, 
     COUNT(1) totCount, 
     COUNT(CASE WHEN Status = 1 THEN 1 END) statusCount
  FROM Order_Item
  GROUP BY fk_order_id
) t
WHERE totCount = statusCount

SQL Fiddle Demo

这可以合并到一个查询中,但我认为使用子查询可以更好地阅读。