0

有这个查询:

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
4

3 回答 3

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;
于 2013-03-13T14:14:51.280 回答
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); 

SQL 演示

于 2013-03-13T14:10:24.997 回答
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;

SQL 小提琴演示

输出

PAGE    ID  CATALOGID
----------------------
2       404     7
3       403     7
于 2013-03-13T14:15:04.237 回答