MySQL选择与值

时间:2017-03-05 09:57:16

标签: mysql

我已经开了很长时间了,我不打算自己解决这个问题所以我希望我能在这里得到一些帮助,非常感谢。

我的问题如下:

我有这个简单的查询:

SELECT * FROM oc_order WHERE order_status_id = '0' ORDER BY order_id DESC

显示值为0的所有记录。这表示尚未完成的订单。

我真正想要的是在订单中email 其他已完成订单的情况下未完成的订单

问题是在输出列表中有很多记录也有order_status_id = 1(订单已完成)。

我需要一个结合了order_status_id 0和1的查询,但是如果有一个记录具有相同的电子邮件地址(order_email)且order_status_id = 1,我不想显示它。

如果有效,我会有一份清单,其中包含所有未完成的订单,因此我可以通过折扣优惠券向客户发送电子邮件。

非常感谢你的帮助,我需要一些感激之情,我当然会很乐意这样做。

实际的数据库有点复杂,但在基础知识中,上述问题对我来说将是一个巨大的节省时间。

亲切的问候,

修正:

选择t1。* 来自oc_order t1 在t2.email = t1.email和t2.order_status_id ='3'左连接oc_order t2 其中t1.order_status_id ='0' 和t2.order_status_id为空 ORDER BY t1order_id DESC

1 个答案:

答案 0 :(得分:0)

以下是一种方法 - 内部查询为您提供了一个已完成= 1的电子邮件地址列表,该结果用于从外部结果排除这些电子邮件。 ..

SELECT * FROM mytable 
   WHERE email NOT IN (
      SELECT DISTINCT email FROM mytable WHERE finished=1
   )