У меня есть одна таблица1, имеет поле, как показано ниже.
rsid pos
123 10000
234 10001
567 10008
и другая таблица2 имеет только одно поле
rsid
123
345
...
Итак, моя цель - найти rsids, позиция которых находится в определенном диапазоне.
например, я хочу найти rsid в table1, позиция которого находится в пределах + - 10000 позиций rsids в table2, например 123.
Я могу написать sql для определенных строк, как показано ниже
select *
from table1
where pos > (select pos from table1 where rsid=123)-100000
and pos < (select pos from table1 where rsid=123)+100000;
но в таблице 2 есть тысячи строк, и, наконец, я хочу объединить все квалифицированные rsid в одну таблицу, есть ли способ, как цикл объединяет все результаты?
Большое спасибо за вашу помощь?
UPDATE
Спасибо за ваш добрый ответ. Более конкретный пример будет как ниже. Предположим, в таблице 1 есть только следующие записи.
rsid pos
123 10000
234 10001
567 10008
100 20015
101 20001
108 50000
и другая таблица2 содержит только такие записи.
rsid
123
100
Тогда ожидаемый результат будет
rsid pos
234 10001
567 10008
101 20001
, потому что 234 567 находятся в пределах + -10000 от 123, а 101 находятся в пределах + -10000 от 101.