SQL与Mongo等价查询
我有一个表作为UserData,它的结构如下SQL与Mongo等价查询,sql,sql-server,mongodb,database,Sql,Sql Server,Mongodb,Database,我有一个表作为UserData,它的结构如下 id category value 1 AR 100 2 WT 90 3 WT 12 4 AR 1000 5 AR 2005 6 WT 122 7 BP 112 8 BP 18 现在,我想选择个人类别中具有最大值的所有行。所以我的结果集应该是 id category
id category value
1 AR 100
2 WT 90
3 WT 12
4 AR 1000
5 AR 2005
6 WT 122
7 BP 112
8 BP 18
现在,我想选择个人类别中具有最大值的所有行。所以我的结果集应该是
id category value
5 AR 2005
6 WT 122
7 BP 112
我希望在MongoDB和SQL server查询中都有此功能
在SQL中,我尝试了这个
select id,category,value from
(select id,
category,
value,
max(value)
over (partition by category) result
from UserData ) a
where a.result=a.value order by a.id
这给了我想要的结果,但不知何故,我觉得这并不好
因此,我希望在SQL中找到更好的解决方案,并为MongoDB提供相应的等效解决方案,我不确定是否有mongo解决方案,但如果您不关心Id,那么下面是获得类别最高值的方法
SELECT DISTINCT
Category, MAX(Value)
FROM UserData
GROUP BY category
如果这比您想要的更简单,请原谅。我不确定mongo解决方案,但是如果您不关心Id-下面是获得类别最高值的方法
SELECT DISTINCT
Category, MAX(Value)
FROM UserData
GROUP BY category
请原谅,这比您想要的更简单。如果您的SQL有效,您就不用MySQL。是的,我在SQL server management studio中使用SQL query。您应该为每种格式问一个问题。否则的结果(这已经发生)是,您可能会收到回答一个或另一个,而不是两个的答案。当然。我会记住这一点,如果您的SQL有效,您不会使用MySQL。是的,我在SQL server management studio中使用SQL query。您应该为每种格式问一个问题。否则的结果(这已经发生)是,您可能会收到回答一个或另一个的答案,而不是两个都回答。当然。我会记住这一点,您不需要通过分组方式进行区分。当您在同一集中有category和max时,您会这样做。我在SQLServerManagementStudio 2012中进行了测试。我还需要获取Id。此外,如果您需要获取id,我们不需要在此处进行区分-我相信您拥有的是最佳解决方案。也许一些伟大的头脑会带来一些更好的东西,我不得不承认这不是最优雅的方式,但它是有效的。你不需要通过分组来区分。当你有类别和最大值在同一组时,你就需要这样做了。我在SQLServerManagementStudio 2012中进行了测试。我还需要获取Id。此外,如果您需要获取id,我们不需要在此处进行区分-我相信您拥有的是最佳解决方案。也许一些伟大的头脑会带来更好的东西,我不得不承认这不是最优雅的方式,但它是有效的。