Mysql 查找具有两个条件的匹配列的所有行

Mysql 查找具有两个条件的匹配列的所有行,mysql,Mysql,我有两个表,我想找出哪些订单在line_items表中有两行,以及其中一行的sku是BALL。基本上,无论球行的数量是多少,都要找到只订购了一个球的所有客户。每个订单至少需要有两行,因为其中一行将始终用于装运sku 在下面的数据中,john和sam将是唯一返回的有效订单,因为他们的订单在line_items表中的唯一SKU是BALL和SHIPPING(不考虑BALL数量)。我希望合并这些表,以便返回的数据具有订单id、客户、放置日期和数量 TABLE orders id customer

我有两个表,我想找出哪些订单在line_items表中有两行,以及其中一行的sku是BALL。基本上,无论球行的数量是多少,都要找到只订购了一个球的所有客户。每个订单至少需要有两行,因为其中一行将始终用于装运sku

在下面的数据中,john和sam将是唯一返回的有效订单,因为他们的订单在line_items表中的唯一SKU是BALL和SHIPPING(不考虑BALL数量)。我希望合并这些表,以便返回的数据具有订单id、客户、放置日期和数量

TABLE orders
id   customer   date_placed
===========================
0    john       1/1/2000
1    bill       2/1/2000
2    sam        2/5/2000


TABLE line_items
id   order_id   qty   sku
=========================
0    0          1     BALL
1    0          1     SHIPPING

2    1          1     BALL
3    1          1     ROPE
4    1          1     SHIPPING

5    2          3     BALL
6    2          1     SHIPPING

非常感谢你

如果我理解正确,你应该可以这样写:

SELECT o.id, customer, date_placed, li.qty
FROM orders o
INNER JOIN line_items li
  ON o.id=li.order_id AND li.sku='BALL'
WHERE EXISTS(
  SELECT order_id 
  FROM line_items tli 
  WHERE o.id=tli.order_id 
  GROUP BY order_id 
  HAVING count(*)=2)

谢谢,我已经走了这么远。但我无法克服的一点是,它仅限于只有SKU和发货的订单。这意味着john和sam是可以的,但是bill不应该被退回(您的示例确实会退回),因为他的订单包含SKU球、绳索和装运。好的。我误解了。我已经更新了答案,只包括有2行项目的订单。