У меня есть запрос, который возвращает ряд чисел:
SELECT Sequence FROM Table1 WHERE Hash=2783342
Возвраты:
578
642
313
Теперь, я хочу найти все строки в первой таблице, где любой тот набор чисел между двумя другими столбцами. В целях иллюстрации я просто выбираю 578, но я также хочу всех остальных:
SELECT * FROM Table1 WHERE 578 BETWEEN Sequence AND SequenceEnd
Использование 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)