mysql - 在两个日期之间加入 MAX id
问题描述
我遇到了这个加入的问题。基本上我只需要知道两个表上是否存在“仓库”,但只需在两个日期之间获取所需“仓库”的最后一个条目。
Select c.warehouse, p.id, p.status FROM control c LEFT JOIN payment p ON c.warehouse = p.warehouse WHERE p.date BETWEEN '2018-06-26' AND '2018-06-27'
我也试过(它说:无效使用组功能):
Select c.warehouse, p.id, p.status FROM control c LEFT JOIN payment p ON c.warehouse = p.warehouse WHERE p.date BETWEEN '2018-06-26' AND '2018-06-27' && p.id = MAX(p.id)
这些是我的桌子:
payments control
+---------------------------------------+ +-----------+
| id | warehouse | status | date | | warehouse |
+---------------------------------------+ +-----------+
|19006| 226975 | DUE |2018-06-26| | 226975 |
MAX ID-> |19066| 226975 | PAID |2018-06-27| | 226976 |
+---------------------------------------+ +-----------+
获得的结果:
+--------------------------------------+
| warehouse | id | status | date |
+--------------------------------------+
| 226975 |19006 | DUE |2018-06-26|
+--------------------------------------+
在这种情况下,我获得了“第一个条目”,较低的条目(id:19006),我想要“最后一个”(id:19066)的最大值。
预期结果:
+--------------------------------------+
| warehouse | id | status | date |
+--------------------------------------+
| 226975 |19066 | PAID |2018-06-27|
+--------------------------------------+
有任何想法吗?
解决方案
两个要求。
- 列
warehouse
在两个表中的行。排除其他人。这是通过内部 JOIN 完成的。 表中的最新条目
payments
。可以使用此子查询检索每个id
最新条目的。warehouse
SELECT MAX(id) id, warehouse FROM payments GROUP BY warehouse
把它们放在一起:
SELECT p.warehouse, p.id, p.status, p.date
FROM payments p
JOIN ( SELECT MAX(id) id, warehouse
FROM payments
GROUP BY warehouse
) mm ON p.id = mm.id AND p.warehouse = mm.warehouse
JOIN control c ON p.warehouse = c.warehouse
推荐阅读
- c# - 如何按值从 JSON 字符串中删除项目
- python - 多用户 Conda 工作流程
- scala - 如何将 csv 文件转换为 Seq[String]?
- reactjs - 提交按钮后的对象状态反应
- c# - AUTHORIZATION_INVALID_TOKEN
- java - appengine-maven-插件。JsonSyntaxException:java.lang.IllegalStateException:应为 BEGIN_ARRAY,但在第 2 行第 1 列路径为 STRING
- c++ - boost::asio 下是否有可用的“异步消息队列”?
- c# - 关于构建 LINQ 查询的一个“简单”问题让我抓狂
- java - 使用两个实例变量在对象上切换大小写
- reactjs - Aspnet 核心、身份服务器和反应:如何从外部提供者那里检索访问令牌作为声明