SQL:IN与AND结合使用

时间:2017-09-22 10:02:54

标签: sql

以下查询会生成包含每个订单的1个产品的集合,即使特定订单包含多个产品也是如此。

select orders. *, products. *
from `orders`
inner join `products`
where orders.customer_id = " . $customer_id . "
  and orders.order_processed > 0
  and products.product_id in (orders.products)

(orders.products是一个像69,74,35,21这样的字符串)。

我尝试过多次重写,但未能获得理想的结果。 谁能指出我正确的方向?感谢您的支持。

2 个答案:

答案 0 :(得分:0)

您在sql查询中使用过IN运算符。它将给定的表达式与“结果集”中的任何匹配值进行匹配。尝试使用子查询来获取(orders.products)中products.product_id的结果集

答案 1 :(得分:0)

你对IN()的使用可能无法实现你所希望的。您的查询可能看起来更像(猜测)

select orders. *, products. *
from `orders`
inner join `products` ON orders.product_ID = products.id
WHERE orders.customer_id = " . $customer_id . "
  and orders.order_processed > 0