Задача для mysql

Тема в разделе "Базы данных", создана пользователем Tretiy, 9 мар 2008.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Tretiy

    Tretiy Постоялец

    Заблокирован
    Регистр.:
    10 дек 2007
    Сообщения:
    81
    Симпатии:
    9
    Есть очень большая база. Состоит из двух таблиц:
    tabl1 id, name
    tabl2 id, tabl1_id,name

    Как мне удалить из таблицы tabl2 строки в котрых tabl1_id равен несуществующему id в tabl1
     
  2. nwusr

    nwusr Создатель

    Регистр.:
    17 дек 2007
    Сообщения:
    16
    Симпатии:
    0
    Посмотри когда и для чего применяется параметр в SELECT- EXIST.

    А вообще, нужно накладывать на таблицы целостность, проверку целостности(ограничение целостности), создать первичные ключи и тд.. И тогда у тебя такой проблемы не будет.
     
  3. roddik

    roddik Колбаска

    Регистр.:
    26 янв 2007
    Сообщения:
    351
    Симпатии:
    289
    DELETE FROM `tabl2` WHERE `tabl1_id` NOT IN (SELECT `id` FROM `tabl1` WHERE 1)
     
  4. Избранный

    Избранный Писатель

    Регистр.:
    31 янв 2008
    Сообщения:
    8
    Симпатии:
    0
    DELETE FROM `tabl2` WHERE `tabl1_id` NOT IN (SELECT `id` FROM `tabl1` WHERE 1)
     
  5. ziavra

    ziavra Постоялец

    Регистр.:
    14 сен 2006
    Сообщения:
    123
    Симпатии:
    55
    вот еще вариант
    DELETE FROM `tabl2` WHERE NOT EXISTS (
    SELECT 1
    FROM `tabl1`
    WHERE tabl1_id = `tabl2`.id
    )
     
Статус темы:
Закрыта.