Как найти строки, где ряд чисел между двумя числами?

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

SELECT Sequence FROM Table1 WHERE Hash=2783342

Возвраты:

578
642
313

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

SELECT * FROM Table1 WHERE 578 BETWEEN Sequence AND SequenceEnd
1
задан OMG Ponies 13 July 2010 в 18:41
поделиться

1 ответ

Использование 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)
2
ответ дан 2 September 2019 в 23:05
поделиться