gpt4 book ai didi

mysql - MariaDB (MySQL) 中的条件插入

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

我有两张 table 。第一个包含有关传感器的数据(组、名称、最新更新等)。第二个是所有传感器的读数。

我现在想检查传感器的最新更新是否是在不久之前,如果是,则在该传感器的读数表中插入一个空值。

我尝试了一些 IF 语句,但没有成功。我应该选择 INSERT 和“where IN()”吗?

最佳答案

你走在正确的道路上。它实际上是带有 WHERE 子句的 INSERT因此,您需要做的是在读数表中为过去 X 天有更新的传感器创建一条记录(在下面的示例中为 10 天)

类似于:

insert into readings
select 1 as id, id as sens_id, null as info
from sensors
where datediff(now(),latest_update) > 10;

在我的示例中,我提供了一个 ID,但我假设它是 BD 中的自动增量整数...

然后,更新 UPDATE 字段...

update sensors set latest_update = now()
where datediff(now(),latest_update) > 10;

去吧,自己尝试一下...

https://www.db-fiddle.com/f/u1EWRpH7nbxHEjwBDUgwLh/0

更新:

https://www.db-fiddle.com/f/u1EWRpH7nbxHEjwBDUgwLh/1

如果latest_update已编入索引,我建议这样做:

where date_add(now(),INTERVAL -10 DAY) > latest_update;

从索引中受益。

“当您围绕索引列包装函数时,SQL Server 必须计算表中每一行的函数值。当您仅将索引列与标量值或函数结果进行比较时,SQL Server 可以使用该值来查找索引。”

不确定是否适用于 MySQL,因为我没有在本例中测试它,但可以肯定:)

https://www.sqlteam.com/articles/avoid-enclosing-indexed-columns-in-a-function-in-the-where-clause

关于mysql - MariaDB (MySQL) 中的条件插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54272221/

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