我在寫一個查詢來獲取所有客戶信息並顯示他們上次訂購的時間。我當前的查詢是:MYSQL Inner Join按升序排序DateTime
SELECT
`user`.fname,
`user`.lname,
`user`.email,
`order`.orderplaced_ts,
COUNT(*) AS Total
FROM `order`
INNER JOIN `user` ON `order`.user_id = `user`.id
WHERE `order`.store_id = 10
AND `order`.orderplaced_ts > "2015-01-01 00:00:00"
AND `order`.order_status != "Cancelled"
GROUP BY `order`.user_id
ORDER BY `order`.orderplaced_ts
我試過ASC和DESC的ORDER BY order.orderplaced_ts
後,但仍然沒有回來時,我想要的東西。
編輯:目前的結果
First Last Email Date Count
Lisa Day [email protected] 2015-01-08 13:16:31 105
Alex Sullivan [email protected] 2015-01-05 11:48:33 90
Jill GORDON [email protected] 2015-01-02 12:52:57 68
Bob Jain [email protected] 2015-03-23 12:39:24 62
Jack Merkher [email protected] 2015-01-05 11:19:31 56
日期字段顯示他們第一次排序,而我要的是他們訂購的最後一次。
期望的結果將是:
ID User_ID Store_ID orderplaced_ts
1104121 214831 10 2015-01-02 11:04:49
1104261 559281 10 2015-01-02 11:21:34
1104791 420461 10 2015-01-02 12:10:34
1105041 801481 10 2015-01-02 12:33:58
1105051 216501 10 2015-01-02 12:35:28
1105191 814661 10 2015-01-02 12:42:26
1105241 304571 10 2015-01-02 12:44:31
1105321 781611 10 2015-01-02 12:52:41
1105331 528411 10 2015-01-02 12:52:57
1105641 752171 10 2015-01-02 13:36:10
1106061 458791 10 2015-01-02 15:46:24
那麼我現在要做的是讓所有的用戶,有多少次,他們下令什麼:從SELECT *
First Last Email Date Count
Lisa Day [email protected] 2015-07-08 13:16:31 105
Alex Sullivan [email protected] 2015-07-05 11:48:33 90
Jill GORDON [email protected] 2015-07-02 12:52:57 68
Bob Jain [email protected] 2015-07-23 12:39:24 62
Jack Merkher [email protected] 2015-07-05 11:19:31 56
樣本數據是他們放置的最近訂單。
Inner Join只是檢索用戶的電子郵件,名字和姓氏。
我認爲解決問題的最終查詢看起來如下:
不在的Group By
條款
必須有像
sum
或
max
聚合函數
SELECT
`user`.fname,
`user`.lname,
`user`.email,
COUNT(*) AS Total_Orders,
`order`.orderplaced_ts AS First_Order,
MAX(order.orderplaced_ts) AS Last_Order
FROM `order`
INNER JOIN `user` ON `order`.user_id = `user`.id
WHERE `order`.store_id = 10
AND `order`.orderplaced_ts > "2015-01-01 00:00:00"
AND `order`.order_status != "Cancelled"
GROUP BY `order`.user_id ASC
ORDER BY `order`.orderplaced_ts
'asc'通常是默認的排序順序,所以如果你想讓最近的orderplaced_ts在結果中顯示FIRST,它必須是'desc'。 –
這是怎麼回事?您能提供示例數據,期望結果和實際結果嗎? – mjr
你有沒有試過MAX('order'.orderplaced_ts)?我認爲Meoiswa就在下面,你應該使用聚合函數,而不是嘗試通過orderplaced_ts – mjr