cuốn sách gpt4 ai đã làm

mysql - 查询 : Select and display next highest value as new column

In lại Tác giả: Walker 123 更新时间:2023-11-29 00:10:11 hai mươi bốn 4
mua khóa gpt4 Nike

我有这个查询,它列出了我们网站上“页面”的 ID。

SELECT mdl_page.id
FROM mdl_page, mdl_log, mdl_user
WHERE mdl_log.module = "page"
AND mdl_log.action = "view"
AND mdl_user.id = mdl_log.userid
AND mdl_log.info = mdl_page.id
AND mdl_log.course = 178

结果很简单:

| ID |
|-----|
| 3 |
| 4 |
| 7 |
| 11 |

注意计数的跳跃。我想得到这样的东西:

| ID | NEXT ID |
|-----|---------|
| 3 | 4 |
| 4 | 7 |
| 7 | 11 |
| 11 | 12 |

任何人都可以为此指出正确的方向吗?

gia hạn

一个转折点,我必须运行查询的系统(不是我自己的)只允许以“SELECT”开头的查询。

câu trả lời hay nhất

我能想到的两种使用相关子查询的方法,在你的子查询中比较主查询的值并按升序排序并将结果限制为一个

SELECT 
p.id ,
(SELECT
p1.id
FROM mdl_page p1
JOIN mdl_log l1 ON (l1.info = p1.id)
JOIN mdl_user u1 ON (u1.id = l1.userid)
WHERE l1.module = "page"
AND l1.action = "view"
AND l1.course = 178
AND p1.id > p.id
ORDER BY p1.id ASC LIMIT 1) NEXT_ID
FROM mdl_page p
JOIN mdl_log l ON (l.info = p.id)
JOIN mdl_user u ON (u.id = l.userid)
WHERE l.module = "page" AND l.action = "view" AND l.course = 178
ORDER BY p.id

并使用排名查询,在排名查询中,我加入了小于条件 ON (t. 的相同查询编号 < t1.id)所以它会产生多行,比如 (3,4),(3,7),(3,11) 所以我需要选择 3,4 的第一个组合为此我使用了排名查询来给出排名属于同一组的项目,在父级中,我只是限制结果集以显示每个组的第一对

SELECT t3.id,t3.NEXT_ID FROM (
SELECT t.id id, t1.id NEXT_ID ,
@r:= CASE WHEN @g = t.id THEN @r +1 ELSE 1 END rownum,
@g:= t.id
FROM
(SELECT
p.id
FROM
mdl_page p
JOIN mdl_log l ON (l.info = p.id)
JOIN mdl_user u ON (u.id = l.userid)
WHERE l.module = "page"
AND l.action = "view"
AND l.course = 178
ORDER BY p.id
) t
LEFT JOIN
(SELECT
p.id
FROM
mdl_page p
JOIN mdl_log l ON (l.info = p.id)
JOIN mdl_user u ON (u.id = l.userid)
WHERE l.module = "page"
AND l.action = "view"
AND l.course = 178
ORDER BY p.id ) t1 ON (t.`id` < t1.id)
CROSS JOIN (SELECT @g:=0,@r:=0) t2
ORDER BY t.`ID` , t1.ID
) t3
WHERE t3.rownum = 1

resutset 如果不存在 id 大于 11 的记录,则 11 的值为 null,或者换句话说,最后一条记录在 next_id 列中为 null

ID NEXT_ID
3 4
4 7
7 11
11 NULL

关于mysql - 查询 : Select and display next highest value as new column,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25554225/

hai mươi bốn 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress