我想使用group by语句获取“ productID”的最新记录。
数据库记录:
cartID productID customerID quantity dateAdded paidStatus
1 20 14 1 2019-03-14 1
2 21 14 1 2019-04-24 1
7 20 16 1 2019-04-25 1
8 20 17 1 2019-04-29 1
11 21 17 2 2019-07-28 1
我尝试过的是:SQL
SELECT * FROM `cart` WHERE productID=20 OR productID=21 GROUP BY productID ORDER BY cartID ASC
对于当前结果,我得到的是cartID 1
而不是8
的第一条记录
下面的SQL记录:
cartID productID customerID quantity dateAdded paidStatus
1 20 14 1 2019-03-14 1
2 21 14 1 2019-04-24 1
我想要的是:
由于某种原因,我需要获取多个记录(按productID)示例,例如WHERE productID=20 OR WHERE productID=21
productID 20
和21
都有多个记录,但
我需要同时获取最后两个记录
我需要的结果:
cartID productID customerID quantity dateAdded paidStatus
8 20 17 1 2019-04-29 1
11 21 17 2 2019-07-28 1
答案 0 :(得分:0)
您可以将子查询用于按客户和产品分组的最大值组,然后加入
select a.productId, a.CustomerId, a.quantity, a.dateadded , a.paidstatus
from my_table a
inner join (
select productId, CustomerId, max(dateadded) max_date
from my_table
group by productId, CustomerId
) t on t.productId = a.productId
and t.CustomerId = a.CustomerId
and t.max_date = a.dateadded
答案 1 :(得分:0)
不存在:
SELECT t.*
FROM cart t
WHERE t.productID IN (20, 21)
AND NOT EXISTS (
SELECT 1 FROM cart
WHERE productID = t.productID AND dateAdded > t.dateAdded
)