use*_*349 10 mysql sql datetime date between
我有一张桌子,想找到最低和最高价格.我希望在"from"和"to"之间的当前日期从action_table获得最低价格.
from to action_price price
2015-04-02 2015-08-02 20 25
2015-04-02 2015-04-20 0 30
2015-04-03 2015-04-21 0 40
Run Code Online (Sandbox Code Playgroud)
所以从上表我需要:min-> 20(因为"from"/"to"之间的当前日期)和max-> 40
我尝试了类似的东西,但没有按预期工作:
SELECT
CASE WHEN curdate() BETWEEN from AND to THEN MAX(action_price) ELSE MAX(price) END AS max,
CASE WHEN curdate() BETWEEN from AND to THEN MIN(action_price) ELSE MIN(price) END AS min
FROM `table`;
Run Code Online (Sandbox Code Playgroud)
如果我理解正确,您需要最小值和最大值:
2520,30,40
您只需将case语句包装在聚合函数中而不是其他方式:
SELECT
MIN(CASE WHEN CURDATE() BETWEEN `from` AND `to` THEN action_price ELSE price END) AS `min`,
MAX(CASE WHEN CURDATE() BETWEEN `from` AND `to` THEN action_price ELSE price END) AS `max`
FROM action_table;
Run Code Online (Sandbox Code Playgroud)
+------+------+
| min | max |
+------+------+
| 20 | 40 |
+------+------+
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
894 次 |
| 最近记录: |