[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: не удаляются записи из базы
freez
помогите пожалуйста, мне нужно чтобы в таблице осталось 10 записей отсортированных по hits, проверял ту часть где SELECT, работает ... а вот все вместе не хочет, что я зделал неправильно?

$result=mysql_query("DELETE FROM table WHERE hits NOT IN (SELECT hits FROM table ORDER BY hits DESC LIMIT 10)");



Спустя 8 минут, 31 секунда (10.06.2011 - 12:52) sharki написал(а):
freez
тут надо использовать ALIAS для 2х запросов из одной таблицы.

DELETE 
FROM
`table` AS t1
WHERE
t1.`hits` NOT IN (SELECT t2.`hits` FROM `table` AS t2 ORDER BY t2.`hits` DESC LIMIT 10)

Спустя 17 минут, 51 секунда (10.06.2011 - 13:10) freez написал(а):
сделал так -
$result=mysql_query("DELETE FROM table AS t1 WHERE t1.hits NOT IN (SELECT t2.hits FROM table AS t2 ORDER BY t2.hits DESC LIMIT 10)");

Спустя 1 минута, 13 секунд (10.06.2011 - 13:11) freez написал(а):
не работает((

Спустя 5 минут, 24 секунды (10.06.2011 - 13:16) sharki написал(а):
freez
если без обратных кавычек, то table - считается зарезервированным словом в MYSQL, из-за этого ошибка. И лучше её сюда написать

Спустя 2 минуты, 16 секунд (10.06.2011 - 13:19) Guest написал(а):
переименовал таблицу и в запросе тож поменял, все равно не работает (((

$result=mysql_query("DELETE FROM articles AS t1 WHERE t1.hits NOT IN (SELECT t2.hits FROM articles AS t2 ORDER BY t2.hits DESC LIMIT 10)");

Спустя 34 минуты, 4 секунды (10.06.2011 - 13:53) sharki написал(а):
хм, попробовал у себя, пишет
MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'


Видать не поддерживает, делай значит 2 запроса...

Спустя 29 минут, 6 секунд (10.06.2011 - 14:22) Guest написал(а):
как? извини я новичек в этом... и уже запутался окончательно...(

Спустя 32 секунды (10.06.2011 - 14:22) Guest написал(а):
аааа уже понял, сори)

Спустя 4 часа, 42 минуты, 59 секунд (10.06.2011 - 19:05) inpost написал(а):
1) Сделай через 2 запроса. Так будет и тебе удобнее сейчас, и в дальнейшем. Запрос 1 - выбрал записи, которые удаляем, запрос 2 - подставил в WHERE NOT IN.
2) Та же проблема и с UPDATE, нарушается целосность, когда ты подставляешь выборку во время удаления. Есть раздел у нас "Конкурсы", там последний конкурс по сортировке. Посмотри, как использовали люди UPDATE с внутренними подзапросами. Допустим в моей работе №1 я использовал с двойной вложенностью, так как одинарная,как у тебя, мускул не поддерживал. Замечу, что данный вид не поддерживается до 5-ой версии Mysql, есть и второй способ, в самом начале в одной из работ использовался подзапрос, данные отправлялись в переменную, а переменная подставлялась. Если лень во всё это вникать - сделай пунктом 1, если хочешь окунуться в профессиональное программирование, посмотри в разделе конкурсы реализации с UPDATE.
Быстрый ответ:

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