我有以下表格:
-- t_products
prod_id ... name ... price
--------------------------
1 Prod1 23.2
2 Prod2 11.5
3 Prod3 10.0
4 Prod4 4.43
-- t_products_lists
list_id ... prod_id ... date_created
1 1 2016-02-01
2 1 2015-31-12
3 3 2015-01-01
4 3 2015-12-01
5 4 2014-02-05
6 4 2012-24-06
7 2 2016-11-10
我需要的是从t_products_lists
获取date_created < 2016-01-01
(2,3,4,5,6)的所有行。
现在,根据这些结果,对于所有重复的prod_id
群,我只需要date_created
与最新的 prod_id
。我需要从name
获取price
和t_products
,然后与date_created
一起返回。
结果应为:
prod_id ... name ... price ... date_created
-------------------------------------------
1 Prod1 23.2 2015-31-12 (the only one before 2016-01-01)
3 Prod3 10.0 2015-12-01 (the latest date)
4 Prod4 4.43 2014-02-05 (the latest date)
到目前为止,我正试图加入这样的表格:
SELECT COUNT(prod.prod_id), prod.name, prod.price, prodlist.date_created
FROM t_products_lists prodlist
INNER JOIN t_products prod ON prodlist.prod_id = prod.prod_id
WHERE prodlist.date_created < CONVERT(DATETIME,'01.01.2016 23:59:59.997',0)
GROUP BY prod.prod_id, art.name, art.price, prodlist.date_created
但现在我不知道怎样才能获得带有最新日期的prod_id
,因为使用此查询它只会在 01.01.2016 之前返回所有ID
答案 0 :(得分:1)
USE MainActivity
MAX( prodlist.date_created)
答案 1 :(得分:0)
您将需要类似下面的内容。不是按创建日期分组,而是在select子句中放置一个MAX。
SELECT COUNT(prod.prod_id), prod.name, prod.price, MAX(prodlist.date_created )
FROM t_products_lists prodlist
INNER JOIN t_products prod
ON prodlist.prod_id = prod.prod_id
WHERE prodlist.date_created < CONVERT(DATETIME,'01.01.2016 23:59:59.997',0)
GROUP BY prod.prod_id, art.name, art.price
处详细了解MAX