从同一表的子查询中选择ID + 1

时间:2018-10-21 12:15:34

标签: sql subquery querying

我需要从id + 1中选择所有id - 1MYTABLE行信息,条件是在同一表的现有查询中存在id

我尝试过:

SELECT * 
FROM MYTABLE
WHERE
    id - 1 IN (SELECT * FROM MYTABLE WHERE EXISTINGQUERY) AND
    id + 1 IN (SELECT * FROM MYTABLE WHERE EXISTINGQUERY)

但这不起作用。

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

在我看来,您可以使用如下所示的连接来编写查询

SELECT t1.* FROM MYTABLE t1 
join (SELECT * FROM MYTABLE WHERE EXISTINGQUERY) t2 
on (t1.id-1=t2.id or t1.id+1=t2.id)

答案 1 :(得分:1)

可以使用以下 SELECT语句,该语句包含替换变量:id

SELECT s.* 
  FROM MYTABLE s 
 WHERE id in (:id - 1,:id + 1) 
   AND EXISTS ( SELECT 1 FROM MYTABLE s WHERE id =:id AND EXISTINGQUERY);

根据数据库,其中的冒号(:)表示法可以替换为@&