powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / DELETE FROM xxx WHERE Id IN (SELECT Id FROM xxx LEFT JOIN... LEFT JOIN... WHERE... )
11 сообщений из 11, страница 1 из 1
DELETE FROM xxx WHERE Id IN (SELECT Id FROM xxx LEFT JOIN... LEFT JOIN... WHERE... )
    #39435855
sergey_privacy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет всем!

Есть задача выбрать из таблицы Id с определенными условиями и эти Id потом грохнуть из таблицы.
Таблица xxx имеет столбцы a1, a2, a3.
Таблица yyy имеет столбцы b1, b2, b3.
Таблицы имеют одинаковые поля xxx.a2=yyy.b2

Пытаюсь сделать запрос типа
DELETE FROM xxx WHERE xxx.a1 IN (SELECT xxx.a1 FROM xxx LEFT JOIN yyy ON xxx.a2=yyy.b2 WHERE yyy.b2='11111' )

Получаю ошибку, что нельзя удалять из таблицы, из которой происходит выборка. Как лучше обойти проблему?
...
Рейтинг: 0 / 0
DELETE FROM xxx WHERE Id IN (SELECT Id FROM xxx LEFT JOIN... LEFT JOIN... WHERE... )
    #39436114
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sergey_privacyЕсть задача выбрать из таблицы Id с определенными условиями и эти Id потом грохнуть из таблицы.Зачем надо выбирать? почему не удалить сразу?

sergey_privacyКак лучше обойти проблему?Почитать справку по DELETE, причём именно раздел, посвящённый Multitable Syntax.
...
Рейтинг: 0 / 0
DELETE FROM xxx WHERE Id IN (SELECT Id FROM xxx LEFT JOIN... LEFT JOIN... WHERE... )
    #39436303
sergey_privacy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Выбираю затем, что в реальности собрано туева хуча таблиц в запросе. Здесь я не стал все исходные данные давать, сильно упростил запрос. Как иначе выбрать данные - не знаю.
...
Рейтинг: 0 / 0
DELETE FROM xxx WHERE Id IN (SELECT Id FROM xxx LEFT JOIN... LEFT JOIN... WHERE... )
    #39436315
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sergey_privacy,
как вариант использовать хранимые прцедуры, где можно разнести отбор и удаление.
...
Рейтинг: 0 / 0
DELETE FROM xxx WHERE Id IN (SELECT Id FROM xxx LEFT JOIN... LEFT JOIN... WHERE... )
    #39436338
sergey_privacy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А чуть подробнее? У меня хранимых процедур полно, но они делают то же самое, что и обычные запросы с сайта. Если просто так не работает выборка, как заработает в хранимой процедуре? Вызывать одну процедуру из другой? Первый раз об этом слышу.
...
Рейтинг: 0 / 0
DELETE FROM xxx WHERE Id IN (SELECT Id FROM xxx LEFT JOIN... LEFT JOIN... WHERE... )
    #39436344
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
примерно так


Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT
  GROUP_CONCAT(city.id) INTO @s
FROM city;

DELETE
  FROM city
WHERE FIND_IN_SET(id, @s)
...
Рейтинг: 0 / 0
DELETE FROM xxx WHERE Id IN (SELECT Id FROM xxx LEFT JOIN... LEFT JOIN... WHERE... )
    #39436380
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sergey_privacyКак иначе выбрать данные - не знаю.
Ну я же вроде сказал, как... не можете найти сами - вот ссылка: DELETE Syntax , читать раздел Multiple-Table Syntax .
...
Рейтинг: 0 / 0
DELETE FROM xxx WHERE Id IN (SELECT Id FROM xxx LEFT JOIN... LEFT JOIN... WHERE... )
    #39436402
sergey_privacy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадя
Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT
  GROUP_CONCAT(city.id) INTO @s
FROM city;

DELETE
  FROM city
WHERE FIND_IN_SET(id, @s)


Спасибо, буду пробовать
...
Рейтинг: 0 / 0
DELETE FROM xxx WHERE Id IN (SELECT Id FROM xxx LEFT JOIN... LEFT JOIN... WHERE... )
    #39436406
sergey_privacy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AkinaНу я же вроде сказал, как... не можете найти сами - вот ссылка: DELETE Syntax , читать раздел Multiple-Table Syntax .
То ли вы задание не совсем правильно поняли, то ли я по этому мануалу не сообразил, как делать, но его чтение мне не дало ничего нового.
...
Рейтинг: 0 / 0
DELETE FROM xxx WHERE Id IN (SELECT Id FROM xxx LEFT JOIN... LEFT JOIN... WHERE... )
    #39436457
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sergey_privacyто ли я по этому мануалу не сообразил, как делать
В точку.
Код: sql
1.
2.
3.
4.
DELETE t1.*
FROM xxx t1, yyy t2
WHERE xxx.a2=yyy.b2 
   AND yyy.b2='11111'
...
Рейтинг: 0 / 0
DELETE FROM xxx WHERE Id IN (SELECT Id FROM xxx LEFT JOIN... LEFT JOIN... WHERE... )
    #39436461
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вернее, так:
Код: sql
1.
2.
3.
4.
DELETE t1.*
FROM xxx t1, yyy t2
WHERE xxx.a1=yyy.b1
   AND yyy.b2='11111'


Текст условий брал из Вашего поста, не посмотрел, что там "косое" условие связывания.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / DELETE FROM xxx WHERE Id IN (SELECT Id FROM xxx LEFT JOIN... LEFT JOIN... WHERE... )
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]