gpt4 book ai didi

MySQL:在查询中查找相对值

转载 作者:行者123 更新时间:2023-11-29 13:47:19 25 4
gpt4 key购买 nike

上下文:事件安排软件。

感谢 this question 上的答复关于查找重复值,我提出了以下查询,该查询非常适合查找同时安排两个事件的用户:

SELECT  *
FROM panel_participants pp
WHERE EXISTS
(
SELECT 1
FROM panel_participants pps
WHERE pp.user_id = pps.user_id
AND pp.day_time_slot_id = pps.day_time_slot_id
AND pp.day_time_slot_id > 0
LIMIT 1, 1
)

现在我需要的是一个非常相似的查询,但有一个区别:我想查找 pp.day_time_slot_id = pps.day_time_slot_id + 2 的项目(这将显示用户已安排的位置)对于两个连续事件)。但是,这会返回零行:

SELECT  *
FROM panel_participants pp
WHERE EXISTS
(
SELECT 1
FROM panel_participants pps
WHERE pp.user_id = pps.user_id
AND pp.day_time_slot_id = pps.day_time_slot_id + 2
AND pp.day_time_slot_id > 0
LIMIT 1, 1
)

我知道有些行应该符合条件,例如用户 503 被安排在时间段 23 和 25 中处理项目。

我尝试根据 this question 的回复设置变量,但我认为我不理解变量如何工作以及如何传入和传出查询,因为我尝试的所有内容都返回错误或零行。我已确认 day_time_slot_id 是一个整数,以防产生影响。

帮忙?

最佳答案

假设您在 panel_participants 表上有一个 panel_id,以下内容将为您提供在同一时间段内有 2 个小组参与的人员列表:-

SELECT  DISTINCT pp.user_id
FROM panel_participants pp
INNER JOIN panel_participants pps
ON pp.user_id = pps.user_id
AND pp.day_time_slot_id = pps.day_time_slot_id
AND pp.panel_id != pps.panel_id
AND pp.day_time_slot_id > 0

下面应该找到那些有 2 个连续时段约会的人(尽管不确定为什么连续时段应该相隔 2 个时段)。

SELECT  DISTINCT pp.user_id
FROM panel_participants pp
INNER JOIN panel_participants pps
ON pp.user_id = pps.user_id
AND pp.day_time_slot_id + 2 = pps.day_time_slot_id
AND pp.day_time_slot_id > 0

恐怕我无法测试这个(或确定),因为您没有发布表格布局或数据。

关于MySQL:在查询中查找相对值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17207432/

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