我试图在两个表中提取具有匹配ID的唯一电子邮件。
SELECT line_items.order_id, line_items.id, orders.email, orders.name
FROM orders INNER JOIN
line_items
ON orders.id = line_items.order_id
WHERE line_items.order_id IN (SELECT DISTINCT email FROM orders WHERE status = 0 AND created_at BETWEEN '2018-01-10' AND NOW() )
LIMIT 50;
我知道我的错误是基于这样一个事实:行\u items.order\u是一个int,因此in参数正在寻找另一个int列来匹配。但是,我不知道如何修改它以获得正确的结果。非常感谢您的帮助。
2条答案
按热度按时间rpppsulh1#
很难理解,但我认为你想要:
在子查询中,选择每个电子邮件以及第一个订单id和行项目id。然后将其连接回订单以提取订单名称。这确实假设min(行项目)将显示每个电子邮件的min(订单id),因此如果这不是一个有效的假设,您必须让我知道。
5ssjco0h2#
我试图在两个表中提取具有匹配ID的唯一电子邮件。
如果您的意思是不同的电子邮件,那么您的子查询将显示为:
因为一个订单至少应该有一个行项目,我不明白为什么这个表是必要的。
您的查询接近于回答这样一个问题:“为最近发出状态为0的订单的电子邮件拉取所有订单”。如果这是你想要的: