gpt4 book ai didi

mysql - 像数组一样迭代结果集

转载 作者:行者123 更新时间:2023-11-29 00:10:03 25 4
gpt4 key购买 nike

我如何在 MySQL 中从结果集中按索引获取任何行,就像大多数编程语言中的数组或集合一样?

array[index]

或者:

collection.getElementByIndex(index)

更新:

我有一个日期结果集,我需要检查每个日期之间是否相隔 90 天

最佳答案

你有两个选择:

  1. 使用子选择。
  2. 使用 MySQL 的功能迭代返回的行。

第一个替代方案看起来像:

SELECT BIT_AND(IFNULL(DATEDIFF((SELECT dt FROM foo WHERE dt > a.dt ORDER BY dt LIMIT 1), a.dt) >= 90, 1)) AS all_larger
FROM foo a;

更新:要处理日期重复的表格,需要添加第二个子选择以查看日期是否有重复,如下所示:

SELECT BIT_AND(larger && ! duplicates) AS all_larger
FROM (SELECT a.dt
, IFNULL(DATEDIFF((SELECT dt FROM foo WHERE dt > a.dt ORDER BY dt LIMIT 1), a.dt) >= 90, 1) AS larger
, (SELECT COUNT(*) FROM foo WHERE dt = a.dt) > 1 AS duplicates
FROM foo a) AS x;

第二种选择看起来像:

SET @prev = NULL;
SELECT BIT_AND(a.larger) AS all_larger
FROM (SELECT IFNULL(DATEDIFF(dt, @prev) >= 90, 1) AS larger
, @prev := dt
FROM foo ORDER BY dt) a;

当在日期之间的差异超过 90 天的表上运行时,两者都会给出以下结果集:

+------------+
| all_larger |
+------------+
| 1 |
+------------+

第二个可能更快,但我没有在更大的集合上进行测量。

关于mysql - 像数组一样迭代结果集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25610798/

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