【问题标题】:Select Id+1 from subquery on same table从同一张表的子查询中选择 Id+1
【发布时间】:2018-10-21 12:15:34
【问题描述】:

我需要从MYTABLE 中选择所有id + 1id - 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);
    

    其中冒号 (:) 表示法可以替换为 @&,具体取决于数据库。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-23
      • 1970-01-01
      • 2017-06-11
      • 1970-01-01
      • 2015-06-10
      • 1970-01-01
      相关资源
      最近更新 更多