我正在尝试查询收据表,从数据库中提取第一笔交易在特定时间范围内的订单号。这是我目前所拥有的:
SELECT id, order_number,
(
SELECT id FROM receipts
WHERE received < r.received AND order_number = r.order_number
LIMIT 1
) priorPayment
FROM receipts r
WHERE received > 1416384000 AND received < 1416470399
ORDER BY id DESC
这工作正常,除了我想过滤掉任何返回 priorPayment 的东西(所以只显示这个子查询返回 null 的地方)现在它返回所有东西。有什么建议吗?
最佳答案
尽管您可以为此子查询或 having
子句使用子查询,但我建议您只使用 left join
SELECT r.id, r.order_number
FROM receipts r LEFT JOIN
receipts r2
ON r2.received < r.received and r2.order_number = r.order_number
WHERE r.received > 1416384000 AND r.received < 1416470399 AND
r2.order_number is NULL
ORDER BY r.id DESC;
关于mysql - 只显示 mysql 子查询返回 null 的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28616564/