Как найти строки, где набор чисел находится между двумя числами? - PullRequest
1 голос
/ 13 июля 2010

У меня есть запрос, который возвращает набор чисел:

SELECT Sequence FROM Table1 WHERE Hash=2783342

Возвращает:

578
642
313

Теперь я хочу найти все строки в первой таблице, где любая из этихнабор чисел находится между двумя другими столбцами.Для иллюстрации я просто выбираю 578, но я также хочу все остальное:

SELECT * FROM Table1 WHERE 578 BETWEEN Sequence AND SequenceEnd

1 Ответ

2 голосов
/ 13 июля 2010

Используя JOIN, но рискует дублировать:

SELECT t.*
  FROM TABLE1 t
  JOIN (SELECT Sequence FROM Table1 WHERE Hash=2783342) x ON x.sequence BETWEEN t.sequence 
                                                                            AND t.sequenceend

Использование EXISTS, без риска дублирования:

SELECT t.*
  FROM TABLE1 t
 WHERE EXISTS(SELECT NULL
                FROM TABLE1 x
               WHERE x.hash = 2783342
                 AND x.sequence BETWEEN t.sequence 
                                    AND t.sequenceend)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...