gpt4 book ai didi

php - 如果特定列在序列上,则Mysql查询获取数据

转载 作者:行者123 更新时间:2023-11-29 01:37:45 25 4
gpt4 key购买 nike

我在这里想要的是检索具有这些条件的 pid:pid 计数至少为 3,sid 应至少包含两个按顺序排列的数字。例如 sid 应该是 1 & 2、2 & 3、3 & 4 等等。

Table sem_attendance
attendance_id sid pid
1 1 3
6 1 12
8 2 12
9 4 12
10 1 23
11 3 23
12 1 29
13 3 27
14 2 24
15 3 21
16 2 21
17 1 27
18 2 27
19 5 23

我的查询:

SELECT attendance_id, sid, sem_attendance.pid
FROM sem_attendance
INNER JOIN (
SELECT pid
FROM sem_attendance
GROUP BY pid HAVING COUNT( pid ) =3)
temp ON sem_attendance.pid = temp.pid
ORDER BY temp.pid, sem_attendance.sid


attendance_id sid pid
6 1 12
8 2 12
9 4 12
10 1 23
11 3 23
19 5 23
17 1 27
18 2 27
13 3 27

期望的输出应该只是 pid 的 12 和 27,因为 sid 的 1、3 和 5 没有按顺序排列。是否可以在 mysql 上执行此操作?如果没有,关于 php 编码怎么样?请帮助我。

最佳答案

您可以将这两个条件拆分为两个单独的子查询,并只选择具有两个集合中都存在的 pid 的行;

SELECT * FROM sem_attendance
WHERE pid IN ( -- at least 3 in the group
SELECT pid FROM sem_attendance
GROUP BY pid HAVING COUNT(1) >= 3
)
AND pid IN ( -- at least 2 consecutive
SELECT a.pid FROM sem_attendance a JOIN sem_attendance b
ON a.pid = b.pid AND a.sid = b.sid + 1
)

An IDEone sample to test with .

关于php - 如果特定列在序列上,则Mysql查询获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35466990/

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