MySQL « Как удалить последние 10 записей?

Добрый день, есть таблица

/** * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann * (http://qbnz.com/highlighter/ and http://geshi.org/) */ .sql.geshi_code {font-family:monospace;} .sql.geshi_code .imp {font-weight: bold; color: red;} .sql.geshi_code .kw1 {color: #993333; font-weight: bold;} .sql.geshi_code .co1 {color: #808080; font-style: italic;} .sql.geshi_code .co2 {color: #808080; font-style: italic;} .sql.geshi_code .coMULTI {color: #808080; font-style: italic;} .sql.geshi_code .es0 {color: #000099; font-weight: bold;} .sql.geshi_code .br0 {color: #66cc66;} .sql.geshi_code .sy0 {color: #66cc66;} .sql.geshi_code .st0 {color: #ff0000;} .sql.geshi_code .nu0 {color: #cc66cc;} .sql.geshi_code span.xtra { display:block; }

CREATE TABLE `pos` (
  `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
  `k_id` int(10) UNSIGNED NOT NULL DEFAULT '0',
  `date` date NOT NULL DEFAULT '0000-00-00',
  `pos` tinyint(3) UNSIGNED NOT NULL DEFAULT '0',
  `type` tinyint(1) UNSIGNED NOT NULL DEFAULT '0',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 ;
 


необходимо удалять все записи кроме последних 10 для k_id = 1.
К дате не привязаться.

1 ответов


Используй LIMIT и ORDER BY id DESC, Люк!


Изврат, конечно, да и не люблю я подзапросы,но :


DELETE
FROM pos WHERE id < (SELECT id FROM pos WHERE k_id=1 ORDER BY id DESC LIMIT 9,1) AND  k_id=1
 

т.е. удаляем те, чьи id меньше полученного id 10й с конца записи. С учетом k_id=1.

Для начала проверьте чисто SELECT FROM WHERE (SELECT *....) вместо DELETE. На всякий случай.