SQL 和 Mongo 等效查询
Posted
技术标签:
【中文标题】SQL 和 Mongo 等效查询【英文标题】:SQL and Mongo Equivalent query 【发布时间】:2016-02-24 23:17:02 【问题描述】:我有一个 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 value
5 AR 2005
6 WT 122
7 BP 112
我想在 MongoDB 和 SQL 服务器查询中都有这个。
在 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 的相应等效解决方案
【问题讨论】:
如果您的 SQL 工作正常,那么您没有使用 mysql。 是的,我在 sql server management studio 中使用 sql 查询。 您应该针对每种格式提出 一个 问题。否则结果(并且已经发生)是您很可能会收到一个答案,答案是其中一个,而不是两个。 当然。我会记住这一点 【参考方案1】:我不确定 mongo 解决方案,但如果您不关心 Id - 这是获得类别最高价值的方法。
SELECT DISTINCT
Category, MAX(Value)
FROM UserData
GROUP BY category
如果这比您想要的更简单,请原谅。
【讨论】:
你不应该需要 DISTINCT 和 GROUP BY。 当你在同一个集合中有类别和最大值时你会这样做。我在 sql server management studio 2012 中测试过。 我还需要获取 ID。此外,我们不需要在这里区分 如果您需要获取 id - 我相信您所拥有的是最好的解决方案。也许一些伟大的头脑会带来更好的东西,我不得不承认这不是最优雅的方式,但它确实有效。以上是关于SQL 和 Mongo 等效查询的主要内容,如果未能解决你的问题,请参考以下文章
用于原始 SQL 查询的等效 Laravel Eloquent
LINQ 和 SQL 中看似等效的查询返回不同的结果 [重复]