gpt4 book ai didi

mysql - 如何从组中选择所有行,直到出现一个值

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

我正在尝试从同一 Group 中提取所有行,直到我遇到断点值 B。下面的示例数据是有序的虚拟表:

+----+--------+------------+
| ID | Group | Breakpoint |
+----+--------+------------+
| 1 | 1 | A |
| 2 | 1 | A |
| 3 | 1 | B |
| 4 | 1 | A |
| 5 | 2 | A |
| 6 | 2 | A |
| 7 | 2 | A |
| 8 | 3 | A |
| 9 | 3 | B |
+----+--------+------------+

这就是我的结果。

+----+--------+------------+
| ID | Group | Breakpoint |
+----+--------+------------+
| 1 | 1 | A |
| 2 | 1 | A |
| 5 | 2 | A |
| 6 | 2 | A |
| 7 | 2 | A |
| 8 | 3 | A |
+----+--------+------------+

请注意,当一个组中同时存在 AB 断点值时,我希望这些行直到第一个 A 值按照这个顺序。如果像 group 2 这样的组只有 A 值,我想拥有该组中的所有项目。

最佳答案

这是一个不使用子查询或 GROUP BY 逻辑的简单解决方案。

SELECT t1.ID, t1.Group, t1.Breakpoint
FROM MyTable AS t1
LEFT OUTER JOIN MyTable AS t2
ON t1.ID >= t2.ID AND t1.`Group` = t2.`Group` AND t2.Breakpoint = 'B'
WHERE t2.ID IS NULL

对于每一行 t1,尝试在同一组中找到具有“B”的另一行 t2,具有较早的 ID。如果未找到,则 OUTER JOIN 保证 t2.ID 为 NULL。只有在所需的断点之前,这种情况才会成立。

关于mysql - 如何从组中选择所有行,直到出现一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46818247/

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