gpt4 book ai didi

mysql - 在存储过程中查询临时表的结果不一致

转载 作者:行者123 更新时间:2023-11-29 05:55:26 26 4
gpt4 key购买 nike

我正在存储过程中创建一个临时表 alarm_clusters。如果我通过 SELECT * FROM alarm_clusters 返回结果,我会得到预期的结果集:

id |alarm_timestamp     |alarm_rule_id |sensor_id |cluster_duration |time_delta |cluster_id |
---|--------------------|--------------|----------|-----------------|-----------|-----------|
1 |2018-01-01 00:00:00 |1 |1 |60 |0 |1 |
2 |2018-01-01 00:02:00 |1 |1 |60 |120 |2 |
3 |2018-01-01 00:02:20 |1 |1 |60 |20 |2 |

而如果我只返回一列 SELECT alarm_timestamp FROM alarm_clusters; 我会重复最后一行中该列的值:

alarm_timestamp     |
--------------------|
2018-01-01 00:02:20 |
2018-01-01 00:02:20 |
2018-01-01 00:02:20 |

我创建了一个 DB Fiddle有两个版本的存储过程。

我错过了什么?

最佳答案

您将获得相同的时间戳,因为您在过程 alarm_timestamp 内的选择查询中使用声明的变量

检查您的 getAlarmTimestamps 过程中的以下行。

SELECT alarm_timestamp FROM alarm_clusters;

理想情况下,您应该使用不同名称的变量而不是与表列变量相同的名称,以避免此类小错误。

变量 alarm_timestamp 具有您在光标中设置的最后一个值,该值显示 alarm_clusters 表中行的总时间

希望这能解决你的困惑

关于mysql - 在存储过程中查询临时表的结果不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49828073/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com