mysql - 只显示 mysql 子查询返回 null 的行

标签 mysql sql

我正在尝试查询收据表,从数据库中提取第一笔交易在特定时间范围内的订单号。这是我目前所拥有的:

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/

相关文章:

mysql - 如何加入子查询的 self 加入?

mysql - 如何运行 Docker 的容器来访问 MySQL 数据库

mysql - 由于待处理的迁移错误,本地主机启动失败

MySQL 查询 select where MIN 日期和月份

sql - 在用数据填充表之前创建索引,还是在数据到位之后创建索引更好?

sql - 从 postgresql 中的 jsonb 数组中获取元素作为平面字符串

php - MYSQL表有静态值和动态值

java - (SQL + Hibernate) 统计 12 个月前的记录

所有语言的 MySQL 排序规则

python - 在 Django ORM 中旋转数据和复杂注释