gpt4 book ai didi

以特定顺序发生的事件的 SQL 查询

转载 作者:行者123 更新时间:2023-12-04 20:33:54 26 4
gpt4 key购买 nike

我有下表:

+--------+-------+------+--+
| Object | Event | Time | |
+--------+-------+------+--+
| Obj1 | A | 1 | |
| Obj1 | B | 3 | |
| Obj2 | A | 7 | |
| Obj2 | B | 4 | |
+--------+-------+------+--+

我的目标是获取所有具有事件 A 和 B 的对象,条件是 A 首先(及时)发生。到目前为止,我只是想出了一个查询来查找所有具有 A 和 B 的对象,而不包括时间:
SELECT DISTINCT Object 
FROM
(SELECT *
FROM
(SELECT *
FROM table
INNER JOIN
(SELECT Object Obj
FROM table
WHERE event LIKE '%A%' AS temp_table) ON table.Object = temp_table.Obj) AS temp_final
WHERE event LIKE '%B%') AS temp2;

所以最终的结果是我得到一个只包含以下内容的表格:
Obj1

因为这是唯一满足所有条件的对象。

时间列是现实生活中的日期戳,但为了简单起见,我使用了整数。

谢谢你的帮助

最佳答案

如果您只跟踪一个接一个发生的两个事件,那么您可以用一个 JOIN 解决这个问题。 .

无论事件数量如何,这都将起作用 Obj1有,如你所说,你只对A感兴趣和 B分别存在和存在。

select distinct t1.object
from TABLE t1
inner join TABLE t2 on t1.object = t2.object
and t2.time > t1.time
and t1.event = 'A'
and t2.event = 'B'

以下是代码结果的示例:
declare @tbl table (obj varchar(10), event varchar(1), time int)

insert @tbl values ('Obj1', 'A', 1), ('Obj1', 'B', 3), ('Obj2', 'A', 7), ('Obj2', 'B', 4)

select distinct t1.obj
from @tbl t1
inner join @tbl t2 on t1.obj = t2.obj
and t2.time > t1.time
and t1.event = 'A'
and t2.event = 'B'

关于以特定顺序发生的事件的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39785095/

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