【发布时间】:2015-01-26 21:23:43
【问题描述】:
是否有可能使用没有连接的组函数获得低于特定值的最接近值?
date productId stock
2014-12-27 1 10
2014-12-31 1 20
2015-01-05 1 30
2014-12-28 2 10
2015-01-04 2 20
该值例如是日期,应该低于2015-01-01,但最高的日期值和结果应该按库存囊排序,所以结果应该是:
date productId stock
2014-12-28 2 10
2014-12-31 1 20
当然,这可以通过连接来解决,但是在大表中连接速度较慢,不是吗?
【问题讨论】:
-
不,这是不正确的,因为我对可能是任何东西的股票价值感兴趣。
-
对不起,我认为比我读的要快。您能否发布您的 sql,您尝试过的内容等以澄清?
-
我更改了一些日期以使其更有意义。我只能想象一个带有
SELECT product_id, stock FROM table LEFT JOIN (SELECT product_id, stock FROM table WHERE date<'2015-01-01' LIMIT 0,1) as table2 ON table.product_id=table2.product_d的解决方案,但这是对大表的缓慢查询。 -
SELECT date, productId, stock FROM table GROUP BY date, productid, stock HAVING date < '2015-01-04' ORDER BY stock ASC怎么样? -
如果我应该运行这个查询,我会得到所有低于 2015-01-04 的值,但我只会得到低于特定日期的最大值。
标签: mysql