Я создал следующий скрипт, чтобы найти строки, которые имели глубину + -2 фута от другой строки:
select a.*
from WELL_FORMATION a,
WELL_FORMATION b
where a.UWI=b.UWI
and a.FORM_ID=b.FORM_ID
and a.SOURCE != 'ABCD'
and b.SOURCE = 'ABCD'
and abs(a.GX_FORM_TOP_DEPTH - b.GX_FORM_TOP_DEPTH) <= 2
Этот скрипт возвращает именно то, что мне нужно.Теперь мне нужно удалить результаты этого запроса.
Используя найденную информацию здесь , я получил следующее:
DELETE t1
from well_formation t1
inner join
(
select a.*
from WELL_FORMATION a,
WELL_FORMATION b
where a.UWI=b.UWI
and a.FORM_ID=b.FORM_ID
and a.SOURCE != 'ABCD'
and b.SOURCE = 'ABCD'
and abs(a.GX_FORM_TOP_DEPTH - b.GX_FORM_TOP_DEPTH) <= 2
) t2 on t1.uwi=t2.uwi
and t1.form_id=t2.form_id
and t1.source=t2.source
Однако я получаюсообщение об ошибке, указывающее, что Sybase не может найти таблицу с именем t1.Когда я удаляю «t1» после DELETE, я получаю ошибку при внутреннем соединении.
Я знаю, что получаю правильные результаты, потому что если я заменю «DELETE t1» на «SELECT *», я получаюзаписи, которые я хочу удалить.
Я использую SQL Anywhere.У кого-нибудь есть предложения по поводу того, что еще я мог бы попробовать?
Спасибо!