在子查询中使用别名的MySQL
进行此查询:在子查询中使用别名的MySQL,mysql,sql,subquery,Mysql,Sql,Subquery,进行此查询: 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
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
试试这个:
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);
试试这个:
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);
输出
PAGE ID CATALOGID
----------------------
2 404 7
3 403 7
输出
PAGE ID CATALOGID
----------------------
2 404 7
3 403 7
您想在其中做什么?我不明白您的查询应该完成什么。您想在其中做什么?我不明白您的查询应该完成什么。如果缺少第+1页或从表中删除了第+1页,这将不会执行什么操作wnats@raheelshan,缺失是什么意思?如果缺失,则返回正确的数据,即仅404行。这仅适用于在gs.ID上添加一个DISTINCT。你能确认吗?@frgtv10,它应该在没有distinct的情况下工作,检查我的sql演示链接不知道为什么,但现在它工作了。你能解释一下,为什么手动gs.PAGE=3也会将其他目录中的页面返回给我?子查询只返回页面+1?Hmmm?如果第+1页丢失或从表中删除,这将不起作用wnats@raheelshan,缺失是什么意思?如果缺失,则返回正确的数据,即仅404行。这仅适用于在gs.ID上添加不同的。你能确认吗?@frgtv10,它应该在没有distinct的情况下工作,检查我的sql演示链接不知道为什么,但现在它工作了。你能解释一下,为什么手动gs.PAGE=3也会将其他目录中的页面返回给我?子查询只返回页面+1?嗯?@frgtv10,我的答案完全一样,唯一的区别是我在里面做+1subquery@frgtv10,我的答案完全相同,唯一的区别是我在子查询中执行+1