具有特殊条件的SQL连接

时间:2017-05-18 14:30:02

标签: sql oracle

我有两个表1)order_details存储order_no和相应的详细信息2)email_details存储order_no和相应的订单状态更新邮件。如何获取未发送邮件的订单列表?

enter image description here

2 个答案:

答案 0 :(得分:2)

可以使用如下子查询来完成:

SELECT order_no, itemlist FROM order_details
WHERE order_no NOT IN (SELECT order_no FROM email_details WHERE sent_mails = 'delivery_confirmation')

此外,将列表中的项目列表以CSV格式存储是不好的做法。关系数据库的优势在于避免这种情况。

答案 1 :(得分:2)

我假设您希望 order_no 用于未发送 delivery_confirmation 电子邮件的订单。如果这是您需要的,它将由以下SQL查询返回:

select od.order_no 
from order_details od 
left join email_details ed on od.order_no = ed.order_no and ed.sent_emails = 'delivery_confirmation'
where ed.order_no is null;