variables - sql语句中的变量使查询挂起
问题描述
以下 sql 语句提供了它应该提供的内容。定义时间范围内的最小值。
select value, datetime from Schuppen
where (value = (select min(value) from Schuppen
where (measure = 'temp')
and datetime between '2018-11-01 00:00:00' and '2018-11-02 00:00:00'))
and datetime between '2018-11-01 00:00:00' and '2018-11-02 00:00:00';
当我使用变量而不是硬编码的日期时,语句会挂起。
set @startdate = cast('2018-11-01 00:00:00' as datetime);
select value, datetime from Schuppen
where (value = (select min(value) from Schuppen
where (measure = 'temp')
and datetime between @startdate and '2018-11-02 00:00:00'))
and datetime between '2018-11-01 00:00:00' and '2018-11-02 00:00:00';
我想知道为什么这个语句不适用于我的 maria db 版本 10.1.26-MariaDB-0+deb9u1。
通过mysql控制台尝试。
mysql --user=XXXX --password=XXXX Outdoor-Air
...
Your MariaDB connection id is 194
Server version: 10.1.26-MariaDB-0+deb9u1 Debian 9.1
...
MariaDB [Outdoor-Air]> set @startdate = cast('2018-11-01 00:00:00' as datetime);
Query OK, 0 rows affected (0.00 sec)
MariaDB [Outdoor-Air]> select @startdate;
+---------------------+
| @startdate |
+---------------------+
| 2018-11-01 00:00:00 |
+---------------------+
1 row in set (0.01 sec)
MariaDB [Outdoor-Air]> select value, datetime from Schuppen where (value = (select min(value) from Schuppen where (measure = 'temp') and datetime between @startdate and '2018-11-02 00:00:00')) and datetime between '2018-11-01 00:00:00' and '2018-11-02 00:00:00';
现在声明挂起。
解决方案
SELECT `value`, `datetime`
FROM Schuppen
WHERE measure = 'temp'
AND `datetime` >= '2018-11-01'
AND `datetime` < '2018-11-01' + INTERVAL 1 DAY
ORDER BY `value` ASC
LIMIT 1;
这应该会有所帮助:
INDEX(measure, datetime, value)
此公式与您的公式之间的一个潜在区别:如果最低值在当天多次出现,则仅显示一行。
推荐阅读
- python-3.x - 我可以删除名称前缀而不污染名称数据吗?
- android - Android Studio:如何将一个项目从 listview1 添加到 listview2 onClick
- ruby-on-rails - ADFS SAML 身份提供者重定向到状态为“响应者”的服务提供者
- autodesk-forge - Autodesk forge 令牌异常
- vba - 从 vba 访问表单获取 android 设备(例如手机、平板电脑...)中文件(例如图片)的路径
- react-native - 在反应本机项目的 gradle 文件夹中找不到包装器/dists
- amazon-web-services - 无法从 EC2 实例连接到负载均衡器
- xml - 在 Powershell 中删除具有重复 XML 元素的节点
- java - 可以声明一个类的 3 种不同的上下文是什么?
- css - CSS:如何剪辑一个 div