|
|
|
delete from X where aa in (select aa from X) - неужели так нельзя?
|
|||
|---|---|---|---|
|
#18+
MySQL 5.5 Запускаю запрос типа: Код: sql 1. и получаю: You can't specify target table 'X' for update in FROM clause но почему? Ведь вначале вычисляются значения (select aa from X), а потом они уже удаляются. Вместо (select aa from X) у меня в реальности более сложная конструкция с группировками и подзапросами, но даже если урезаю конструкцию до такой строки то ругается. Тоесть выходит я не могу удалить данные из таблицы если что удалять расчитываю в ней же? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2013, 00:01:58 |
|
||
|
delete from X where aa in (select aa from X) - неужели так нельзя?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2013, 00:50:35 |
|
||
|
delete from X where aa in (select aa from X) - неужели так нельзя?
|
|||
|---|---|---|---|
|
#18+
Лучше покажи оригинальный запрос, и с ним разбирайся, как его переписать. Принципиально так делать можно, но MySQL почему-то так не умеет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2013, 00:51:55 |
|
||
|
delete from X where aa in (select aa from X) - неужели так нельзя?
|
|||
|---|---|---|---|
|
#18+
Пробывал: Код: sql 1. 2. 3. отлично отрабатывает за 2 секунды. Но при усилении запроса до: Код: sql 1. 2. 3. 4. более чем за 1 час операция так и НЕ выполняется... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2013, 00:52:39 |
|
||
|
delete from X where aa in (select aa from X) - неужели так нельзя?
|
|||
|---|---|---|---|
|
#18+
Спасибо sqlinfo , действительно помогло увеличи конструкцию на дополнительный select * до Код: sql 1. после чего MySQL считает что данные ищет не в X, а в T1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2013, 01:06:12 |
|
||
|
delete from X where aa in (select aa from X) - неужели так нельзя?
|
|||
|---|---|---|---|
|
#18+
И более тяжолый запрос теперь выглядит как Код: sql 1. 2. 3. 4. причём выполняется за теже самые 2 секунды ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2013, 01:08:32 |
|
||
|
delete from X where aa in (select aa from X) - неужели так нельзя?
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. тут слово FROM не пропущено? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2013, 12:37:11 |
|
||
|
delete from X where aa in (select aa from X) - неужели так нельзя?
|
|||
|---|---|---|---|
|
#18+
Я прошу прощения, действительно при копировании забыл FROM! За одно поделюсь и ещё двумя замечаниями: 1) при такой инкапсуляции совсем не обязательно писать название полей, тоесть вместо: Код: plaintext Код: plaintext 2) совсем не обязательно обеим таблицам при такой инкапсуляции давать разные псевдонимы, тоесть вместо: Код: plaintext Код: plaintext Код: plaintext Таким образом мы приходим к тому что сколько бы нибыло условий удаления, все они для работы могу инкапсулироваться в полностью одинаковую конструкцию типа: Код: sql 1. Итого конечный результат выглядит: Код: sql 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2013, 14:52:25 |
|
||
|
|

start [/forum/topic.php?fid=47&tid=1835913]: |
0ms |
get settings: |
8ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
58ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
| others: | 198ms |
| total: | 363ms |

| 0 / 0 |
