gpt4 book ai didi

mysql - 递归运行MySQL函数

转载 作者:搜寻专家 更新时间:2023-10-30 20:23:13 25 4
gpt4 key购买 nike

我在 MySQL 中有一个函数需要在查询中运行大约 50 次(不是设定值)。输入当前存储在一个数组中,例如 [1,2,3,4,5,6,7,8,9,10]

当单独执行 MySQL 查询时它工作正常,请看下面

column_name 表示它正在获取数据的列,在这种情况下,它是数据库中的 DOUBLE

MOD() 函数中的第二个值是我从上述数组提供给 MySQL 的输入

SELECT id, MOD(column_name, 4) AS mod_output
FROM table
HAVING mod_output > 10

为了实现我要求的输出*,下面的代码有效

SELECT id, MOD(column_name, 4) AS mod_output1, MOD(column_name, 5) AS mod_output2, MOD(column_name, 6) AS mod_output3
FROM table
HAVING mod_output1 > 10 AND mod_output2 > 10 AND mod_output3 > 10

然而,这显然是非常脏的,当输入不是 3 个,而是超过 50 个时,这将变得非常低效。

除了调用 50 多个单独的查询之外,是否有更好的方法来实现相同类型(见下文)的输出?

在本质上,我需要为 MySQL 提供一个值列表,并让它在指定列上对所有值运行 MOD()

我需要返回的唯一数据是与 MOD() 函数输出匹配的行的 id 以及指定的输入(参见 的值 2 code>MOD() function) 其中输出小于10

请注意,MOD() 已被用作示例函数,但是,所需的最终函数*应该*是替代品

示例表格布局

id | column_name
1 | 0.234977
2 | 0.957739
3 | 2.499387
4 | 48.395777
5 | 9.943782
6 | -39.234894
7 | 23.49859
.....

(标题可能措辞有误,我不太确定你还能怎么解释我在这里要做的事情)

最佳答案

使用join和派生表或临时表:

SELECT n.n, t.id, MOD(t.column_name, n.n) AS mod_output
FROM table t CROSS JOIN
(SELECT 4 as n UNION ALL SELECT 5 UNION ALL SELECT 6 . . .
) n
WHERE MOD(t.column_name, n.n) > 10;

如果您希望结果以列的形式出现,您可以在之后使用条件聚合。

关于mysql - 递归运行MySQL函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52610851/

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