gpt4 book ai didi

mysql - 从表中选择直到找到给定值

转载 作者:可可西里 更新时间:2023-11-01 07:40:32 26 4
gpt4 key购买 nike

我已经搜索了很长时间,但似乎找不到适合我的东西,因为每个类似的问题都是关于达到一定的列总和。

我正在寻找一种方法来搜索表中所有具有多个公共(public)列值的记录 - 它们不是表中的连续记录,但在考虑公共(public)值时它们必须是连续记录 - 并检索所有记录,直到一个特定列具有不同的值。

给定数据:

PrimaryID   SecondaryID   TertiaryID   Limit       DateTime
12 9 4 1 2013-03-22 00:00:14
11 9 4 1 2013-03-22 00:00:13
10 54 11 0 2013-03-22 00:00:12
9 9 4 1 2013-03-22 00:00:11
8 9 23 1 2013-03-22 00:00:10
7 9 4 1 2013-03-22 00:00:09
6 9 4 0 2013-03-22 00:00:08
5 9 16 0 2013-03-22 00:00:07
4 72 32 0 2013-03-22 00:00:06
3 9 4 1 2013-03-22 00:00:05
2 9 4 1 2013-03-22 00:00:04
1 9 4 0 2013-03-22 00:00:03

我正在尝试检索 SecondaryID=9 和 TertiaryID=4 的记录,直到 Limit=0(按 DateTime DESC 排序)。

使用 PrimaryID 12 作为起点,我希望得到以下结果:

PrimaryID   SecondaryID   TertiaryID   Limit       DateTime
12 9 4 1 2013-03-22 00:00:14
11 9 4 1 2013-03-22 00:00:13
9 9 4 1 2013-03-22 00:00:11
7 9 4 1 2013-03-22 00:00:09

并以 PrimaryID 3 为起点:

PrimaryID   SecondaryID   TertiaryID   Limit       DateTime
3 9 4 1 2013-03-22 00:00:05
2 9 4 1 2013-03-22 00:00:04

目前,我正在检索 SecondaryID=9 和 TertiaryID=4 的每个结果,然后在 PHP 中对其进行循环 - 目前有数百个结果(并且每周都在增长),在生产中工作速度太慢。

最佳答案

我意识到我一直在以错误的方式进行此查询。

我不需要从数据中的给定点“向后计数”来查看 Limit 何时按顺序首次变为 =1,而是需要查找之前出现的 Limit=0,然后向前查询直到我的初始 PrimaryID。

包含我需要的所有内容的结果查询是

SELECT * FROM table1 WHERE SecondaryID='9' AND TertiaryID='4' AND `Limit`='1' AND PrimaryID<='3' AND `DateTime`>= (SELECT `DateTime` FROM table1 WHERE SecondaryID='9' AND TertiaryID='4' AND `Limit`='0' AND PrimaryID<='3' ORDER BY `DateTime` DESC LIMIT 1) ORDER BY `DateTime` DESC

关于mysql - 从表中选择直到找到给定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15563127/

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