我正在加入大量資料來處理動態/復雜查詢。以下只是我正在做的一部分。我找到了一個解決方案,然后我想我調整了它并丟失了它。
資料庫結構:
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
uj5u.com熱心網友回復:
你可以這樣做
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
參見示例http://sqlfiddle.com/#!9/4c6bbca/12
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/318728.html
