2017-03-05 59 views
-3

我一直在打击我的头很长一段时间,我不打算自己修复它,所以我希望我可以在这里得到一些帮助,这真的很感激。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 AND 1的查询,但是如果有一个记录与order_status_id = 1具有相同的电子邮件地址(order_email),我不想显示它。

如果这样做我有一个清单,所有未完成的订单,所以我可以用折扣券给客户发送电子邮件。

非常感谢您的帮助,我需要冷静的事情,当然我很乐意这么做。

实际的数据库有点复杂,但基本上上述问题对我来说是一个巨大的时间。

亲切的问候,

修正:

选择T1 * 从oc_order T1 左加入oc_order T2上t2.email = t1.email和t2.order_status_id = '3' 其中T1。 order_status_id ='0' 和t2.order_status_id为空 ORDER BY t1order_id DESC

+1

group by,sum(finished)<1 – Jeff

+0

我没有得到一个单一的点你想说什么和做 – Ravi

+0

欢迎来到stackoverflow - 抱歉,你已经downvoted,似乎相当苛刻,因为问题是好的。 –

回答

0

下面是做这件事 - 内部查询是给你的电子邮件地址的列表,成品= 1,即结果被用来排除从外结果,这些邮件...

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

你的回答是对的,但我认为OP的意思是不排除这些电子邮件,但只显示他们的第一个未完成的订单。 OP将不得不确认并更具体,但通过简单的区分或分组工作 –

+0

问题最初有样本数据,但现在已删除!这仍然说明了根据分组标准获得未分组的行的一般技术 –

+0

好的。没有检查编辑:) –