Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как удалить записи без связанных записей?
 
 автор: oldman   (15.09.2007 в 08:34)   письмо автору
 
 

Здравствуйте, уважаемые коллеги!

Есть MySQL база с двумя таблицами, тупо связанными внешним ключом.
Интересуют записи первой таблицы, у которых отсутствуют записи второй таблицы.
Вот так их можно посмотреть:

SELECT f.id, s.id FROM first f LEFT JOIN second s ON s.id = s.first_id WHERE ISNULL(s.id);

А вот как их удалить???

   
 
 автор: oradev   (15.09.2007 в 17:11)   письмо автору
 
   для: oldman   (15.09.2007 в 08:34)
 

А вот так их можно удалить:


DELETE FROM first_table
      WHERE ID IN (SELECT f.ID
                     FROM first_table f LEFT JOIN second_table s
                          ON (f.ID = s.ID)
                    WHERE s.ID IS NULL);

   
 
 автор: oldman   (16.09.2007 в 07:46)   письмо автору
 
   для: oradev   (15.09.2007 в 17:11)
 

Ы-ы-ы... :(
А начиная с какой версии MySQL умеет вложенные запросы?

У меня (версия 4.1.15) вот так обламывается:

mysql> DELETE FROM first_table WHERE id IN (SELECT id FROM first_table WHERE id = '20');
ERROR 1093 (HY000): You can't specify target table 'first_table' for update in FROM clause

Хотя вот так проходит:

mysql> DELETE FROM first_table WHERE id IN ('20');
Query OK, 1 row affected (0.00 sec)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования