mysql - 连接来自不同数据库的表只添加最近的日期 SQL
问题描述
我正在加入大量数据来处理动态/复杂查询。以下只是我正在做的一部分。我找到了一个解决方案,然后我想我对其进行了调整并丢失了它。
数据库结构:
phpMyAdmin
|
|-oath
| -users
| -users_meta
| -users_jobs
|
|-order
| -orders
| -carts
| -driver_status
oauth.users
id | foo | baa
--------------
1 | x | x
2 | x | x
3 | x | x
4 | x | x
5 | x | x
order.orders(我知道命名不好,我没有创建数据库)
(customer_id = user.id)
id|order_date| customer_id| ray
-------------------------------
1 | 10/11/21 | 1 | x
2 | 10/11/21 | 1 | x
3 | 09/11/21 | 1 | x
4 | 12/11/21 | 1 | x
5 | 10/11/21 | 2 | x
6 | 12/11/21 | 2 | x
7 | 14/11/21 | 2 | x
我只想加入最近的日期
id | foo | baa |order_date| baa
--------------------------------
1 | x | x | 12/11/21 | x
2 | x | x | 14/11/21 | x
这是我的查询,但出了点问题。Apologize Sql 不是我的强项,结果显示了多个具有不同订单日期的相同用户。如果有多个最近的 order_date,那么就会有多个条目。
SELECT
*
FROM
oauth.users u
LEFT JOIN order.orders o
ON
o.customer_id = u.id
LEFT JOIN(
SELECT
customer_id,
MAX(order_date) order_date
FROM order.orders o2
GROUP BY
customer_id
) SubQ
ON
SubQ.customer_id = o.customer_id AND SubQ.order_date = o.order_date
我正在使用 phpMyAdmin,我认为它使用 Mysql / mariasql
解决方案
你可以这样做
SELECT
*
FROM oauth.users oa
LEFT JOIN (SELECT oo.customer_id, oo.order_date FROM order.orders oo
INNER JOIN (
SELECT
customer_id,
MAX(`order_date`) order_date
FROM order.orders o2
GROUP BY
customer_id
) oo2 ON oo.customer_id = oo2.customer_id AND oo2.order_date = oo.order_date) t1
ON
t1.customer_id = oa.id
推荐阅读
- c# - 在 3 个表之间加入
- apache-spark - 如何通过分布式方法压缩hdfs中的大量文件?
- pandas - How to split Pandas Series into a DataFrame with columns for each hour of day?
- reactjs - 当我在嵌套路由器页面中时,如何从属于主路由器的链接在嵌套路由器页面之间导航
- python - 如何抓取没有引用或名称属性的项目?
- python - 如果我的网络无论我如何训练它或扩展它的容量都永远不会过拟合,这意味着什么?
- arrays - 如何将变量从 axios 获取请求传递给 vuejs 中的子组件?
- c++ - 从 gurobi c++ 中的模型中删除约束
- python - 如何在 python 中对 AZ 以外的 UTF-8 进行加密?
- node.js - Node.js:将图像作为 base64 传递给带有 spawn 的 python