Удаление или изменение группы записей по условию
Удаление или изменение группы записей по условию
Firebird 1.5 Windows XP pro
Есть запрос
SELECT DISTINCT ELEM.K, ELEM.CEN, ELEM.SCEN,SOTEL.M, SOTEL.ID
FROM ELEM
JOIN SOTEL
ON ELEM.K = SOTEL.K
WHERE (ELEM.ID_TIP = 15)
Требуется удалить все записи из таблицы SOTEL возврашаемые предыдушим запросом
Пробовал прописывать
DELETE FROM SOTEL WHERE ID = (SELECT DISTINCT ELEM.K, ELEM.CEN, ELEM.SCEN,SOTEL.M, SOTEL.ID
FROM ELEM
JOIN SOTEL
ON ELEM.K = SOTEL.K
WHERE (ELEM.ID_TIP = 15))
Он мне выдавал multiple rows in singleton select.
Кто - нибудь сталкивался с такой ситуацией ?
Заранее благодарен за ответ
Есть запрос
SELECT DISTINCT ELEM.K, ELEM.CEN, ELEM.SCEN,SOTEL.M, SOTEL.ID
FROM ELEM
JOIN SOTEL
ON ELEM.K = SOTEL.K
WHERE (ELEM.ID_TIP = 15)
Требуется удалить все записи из таблицы SOTEL возврашаемые предыдушим запросом
Пробовал прописывать
DELETE FROM SOTEL WHERE ID = (SELECT DISTINCT ELEM.K, ELEM.CEN, ELEM.SCEN,SOTEL.M, SOTEL.ID
FROM ELEM
JOIN SOTEL
ON ELEM.K = SOTEL.K
WHERE (ELEM.ID_TIP = 15))
Он мне выдавал multiple rows in singleton select.
Кто - нибудь сталкивался с такой ситуацией ?
Заранее благодарен за ответ
-
- Сообщения: 24
- Зарегистрирован: 16 авг 2007, 07:18
Re: Удаление или изменение группы записей по условию
тебе во вложенном селекте нужно выбрать только "SOTEL.ID". а тут ты сразу несколько столбцов сравниваешь с одним.
Re: Удаление или изменение группы записей по условию
А как-нибудь так
DELETE FROM
SELECT DISTINCT ELEM.K, ELEM.CEN, ELEM.SCEN,SOTEL.M, SOTEL.ID
FROM ELEM
JOIN SOTEL
ON ELEM.K = SOTEL.K
WHERE (ELEM.ID_TIP = 15)
DELETE FROM
SELECT DISTINCT ELEM.K, ELEM.CEN, ELEM.SCEN,SOTEL.M, SOTEL.ID
FROM ELEM
JOIN SOTEL
ON ELEM.K = SOTEL.K
WHERE (ELEM.ID_TIP = 15)
Re: Удаление или изменение группы записей по условию
Коробит от таких "запросов". Хочется послать читать Грабера (он же Грубер).
Ты вот представляешь себе, что такое DISTINCT? Каким боком оно для операций с множествами может применятся?
То, что ты хочешь, достигается либо через ж..у (куда ты почему-то инстинктивно пытаешься двигаться), а именно
Либо нормальными SQL методами, а именно
Ты вот представляешь себе, что такое DISTINCT? Каким боком оно для операций с множествами может применятся?
То, что ты хочешь, достигается либо через ж..у (куда ты почему-то инстинктивно пытаешься двигаться), а именно
Код: Выделить всё
delete from sotel
where id in (select sotel.id
from elem
join sotel on elem.k = sotel.k
where elem.id_tip = 15)
Код: Выделить всё
delete from sotel l
where exists (select * from elem where k = l.k and id_tip = 15)
Re: Удаление или изменение группы записей по условию
Таки SP-шкой это по любому быстрее будет. Или execut-ом чего-нибудь. И тем эффективней, чем тяжелее select.
Re: Удаление или изменение группы записей по условию
Спасибо всем за ответы