【问题标题】:Select Id+1 from subquery on same table从同一张表的子查询中选择 Id+1
【发布时间】:2018-10-21 12:15:34
【问题描述】:
我需要从MYTABLE 中选择所有id + 1 和id - 1 行信息,条件是id 存在于同一张表的现有查询中。
我试过了:
SELECT *
FROM MYTABLE
WHERE
id - 1 IN (SELECT * FROM MYTABLE WHERE EXISTINGQUERY) AND
id + 1 IN (SELECT * FROM MYTABLE WHERE EXISTINGQUERY)
但它不起作用。
有什么建议吗?
【问题讨论】:
标签:
sql
subquery
querying
【解决方案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)
【解决方案2】:
可以使用以下 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);
其中冒号 (:) 表示法可以替换为 @ 或 &,具体取决于数据库。