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.
К дате не привязаться.
/** * 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 ответов
Изврат, конечно, да и не люблю я подзапросы,но :
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. На всякий случай.