我想执行一个简单的SQL查询,但无法设法使其正确。
(对不起这个例子,我只能想到解释我的问题)
假设我有一个包含X列的表 FooBar ,但只有3列对我有用。
DogKind_Id, FoodQuantity, Day_Id
我想知道,对于每个DogKind_Id,FoodQuantity最大的那一天是什么时候! 所以对于FooBar表来说:
DogKind_Id, FoodQuantity, Day_Id
1,2, 2
1,10,1
1,4,5
2,3, 3
2,9,1
2,87,5
3,0, 3
3,0,2
3,1,6
我的查询结果将是:
DogKind_Id, Day_Id
1,1
2,5
3,6
到目前为止,我成功地做到了这一点:
SELECT DogKind_Id, MAX(FoodQuantity)
FROM FooBar
GROUP BY DogKind_Id
但我无法简单地使用此结果来获取Day_Id ...如果我在上面的SELECT中有Day_Id,它会添加很多行...我尝试了SUBSELECT,EXISTS但显然做错了!
你们可以帮助我一点吗?
答案 0 :(得分:1)
SELECT parent.DogKind_id, parent.Day_Id
FROM FooBar AS parent
INNER JOIN (
SELECT DogKind_Id, MAX(FoodQuantity) AS Max
FROM FooBar
GROUP BY DogKind_Id
) AS child ON (parent.DogKind_Id=child.DogKind_Id) AND (parent.FoodQuantity = child.Max)
基本上,内部查询是您的版本,它获取id / max值。 然后,您可以使用外部查询加入此子查询,以确定记录的WHICH具有最大食品数量,因此您可以获得关联的日期