1

次のMYSQLテーブルがあります

OrderId OrderItemId IsReceived
  1         21          0
  1         22          1
  2         31          1
  2         11          0
  2         21          0
  3         31          1
  3         12          1
  • IsReceived== 1 の場合、このアイテムが受領されたことを意味します。

  • == 0 の場合IsReceived、このアイテムはまだ受け取っていないことを意味します。

どの注文が完全に受信されたか (すべて受信されたか) を知りたいのですorderItemsが、Mysql Query とは何ですか?

この場合、OrderId: 3 が返されます ( orderId3 では、すべての注文アイテムが受信されるため)。

4

3 に答える 3

7

ここに1つの解決策があります:

SELECT OrderId
FROM `IHaveFollowingMySQLTable`
GROUP BY OrderID
HAVING MIN(IsReceived) = 1
于 2013-03-08T05:16:06.587 に答える
0

そしてもう一つ

SELECT OrderId
  FROM  OrderItems
 GROUP BY OrderID
HAVING SUM(IsReceived) = COUNT(IsReceived)

しかし、@Bill Karwinの答えは最もエレガントです。

于 2013-03-08T05:23:38.903 に答える
0
select distinct(tbl.OrderId) from your_table_name tbl where tbl.OrderId not in
(select distinct(tbl2.OrderId) from your_table_name tbl2 where tbl2.IsReceived=0)
于 2013-03-08T05:24:11.807 に答える