有这个查询:
SELECT
gs.PAGE,
gs.ID,
gs.CATALOGID
FROM pages gs
WHERE gs.ID = 404
OR gs.ID = (SELECT
gs2.ID
FROM pages gs2
WHERE gs2.CATALOGID = gs.CATALOGID
AND gs2.PAGE = gs.PAGE + 1);
应该给我:
PAGE | ID | CATALOGID
2 | 404 | 7
3 | 403 | 7
但它只返回ID为404的页面。 问题似乎是那里的别名。
我有一个页面的ID,并且需要获得正确的页面,添加到pageno +1。
问题是什么?
编辑:
示例数据:
PAGE ID CATALOGID
1 291 7
2 404 7
3 403 7
4 450 7
5 455 7
答案 0 :(得分:2)
SELECT *
FROM pages gs
WHERE gs.PAGE =
(SELECT gs2.PAGE FROM pages gs2
WHERE gs2.CATALOGID=gs.CATALOGID AND gs2.ID = 404 ) + 1
OR gs.ID = 404;
答案 1 :(得分:1)
试试这个:
SELECT
gs.PAGE,
gs.ID,
gs.CATALOGID
FROM pages gs
WHERE gs.ID = 404
OR gs.PAGE = ( SELECT PAGE + 1
FROM pages x
where x.id = 404
and gs.CATALOGID = x.CATALOGID);
答案 2 :(得分:0)
SELECT
gs.PAGE,
gs.ID,
gs.CATALOGID
FROM pages gs
WHERE gs.PAGE >= (SELECT
gs2.PAGE
FROM pages gs2
WHERE gs2.ID = 404)
LIMIT 2;
输出
PAGE ID CATALOGID
----------------------
2 404 7
3 403 7