[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Update + Select + rand()
greatilya
Нужно у случайных 10 записей удовлетворяющим условиям изменить значение `best` на 1.
Подскажите что я делаю не так?
UPDATE `tableA` SET `best`=1 WHERE `id` IN (SELECT `id` FROM `tableA` WHERE `price`>5 AND `delete`=0 ORDER BY RAND()) LIMIT 10

Выдает ошибку:
Цитата
You can't specify target table 'tableA' for update in FROM clause




Спустя 9 минут, 26 секунд (23.09.2010 - 18:19) vasa_c написал(а):
во-первых, LIMIT ни к тому запросу, во-вторых "You can't specify target table 'tableA' for update".

Спустя 35 минут, 34 секунды (23.09.2010 - 18:55) greatilya написал(а):
Цитата
LIMIT ни к тому запросу

Пробовал писать так, ругается на LIMIT:
UPDATE `tableA` SET `best`=1 WHERE `id` IN (SELECT `id` FROM `tableA` WHERE `price`>5 AND `delete`=0 ORDER BY RAND() LIMIT 10)


Цитата
You can't specify target table 'tableA' for update

с англ не совсем дружу. Вот что смог перевести "Вы не можете указать целевую таблицу TableA для Update". Не совсем понятно как тогда сдеать, делал вроде по образцу:

UPDATE table_A SET id_level = ROWNUM  
WHERE id_level IN (SELECT id_level FROM table_A GROUP BY id_level)

Спустя 1 час, 17 минут, 22 секунды (23.09.2010 - 20:12) SlavaFr написал(а):
Цитата (vasa_c @ 23.09.2010 - 15:19)
во-первых, LIMIT ни к тому запросу, ...

и к тому тоже http://dev.mysql.com/doc/refman/5.0/en/update.html


UPDATE `tableA` SET `best`=1 WHERE `price`>5 AND `delete`=0 ORDER BY RAND() LIMIT 10

Спустя 6 часов, 32 минуты, 29 секунд (24.09.2010 - 02:45) greatilya написал(а):
SlavaFr
Спасибо, помогло! Не думал что всё так просто.

Спустя 7 часов, 39 минут, 8 секунд (24.09.2010 - 10:24) SlavaFr написал(а):
в будущем при упдате не делай subquery, делай нормальный join и давай алиасы
типа

update xtabele as x inner join xtable as x1 on x.id=x1.id
set x.pole=.... , x.pole2= ....
where .........
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.