我能以优化的方式用最小值和相应的值编写单个查询返回组吗?目前我们正在使用多个查询。
例如: 表格包含产品类别,产品名称,产品ID和价格。我想以min(价格)返回产品类型,还要返回产品名称和产品ID。这是在SQL 2008中。产品名称和产品ID可以重复
答案 0 :(得分:0)
第一个注意事项是SQL是一种声明性语言;它声明了一个功能需求,而不是如何解决该需求(SQL是根据统计数据,索引,提示等等编译并解释到解释/执行计划中,然后那是什么被执行。)。
也就是说,一些SQL表达式比其他表达式更昂贵。您的案例有一个使用分析函数(也称为窗口函数)的简单解决方案,由于只扫描表(或适当的索引),因此成本较低。
"links" : [
{
"link" : "google.es",
"_id" : ObjectId("57d15ed8b9859615ef11e8b6"),
},
{
"link" : "gog.com",
"_id" : ObjectId("57d15ed8b9859615ef11e8b7"),
},
{
"link" : "google.es",
"_id" : ObjectId("57d15ed8b9859615ef11e8b6"),
},
{
"link" : "gog.com",
"_id" : ObjectId("57d15ed8b9859615ef11e8b7"),
}
],
答案 1 :(得分:0)
SELECT * FROM (
SELECT ProductCatg, ProductName, ProductID, MIN(PRICE), DateOrdered
FROM YOUR_TABLE
GROUP BY ProductCatg, ProductName, ProductID, DateOrdered ) A
WHERE A.PRICE = (SELECT MIN(PRICE)
FROM YOUR_TABLE
WHERE ProductCatg = A.ProductCatg AND ProductName = A.ProductName )