2013-12-15 6 views
1

У меня есть таблица MySql (pin_codes). Сначала я хочу выбрать ровно 200 строк из этой таблицы и экспортировать их, тогда я хочу удалить 200 строк.Выберите и удалите ровно x строк из таблицы MySql

Если идентификаторы этой таблицы были непрерывными, я мог бы сделать это:

SELECT * FROM pin_codes WHERE id<200 and id>1; 
DELETE FROM pin_codes WHERE id<200 and id>1; 

Но идентификаторы, как это:

52138 
52139 
52141 
52142 
52144 
52147 
52148 
52157 
52158 
... 

Как я могу это сделать?

ответ

3
Select * from pin_codes order by id limit 200 

даст вам первые 200 строк на основе идентификатора, а затем вы можете удалить те 200 идентификаторов

Delete from pin-codes order by id limit 200 

удалить первые 200 строк

Также рекомендуется использовать название столбца из * (Оптимизация запросов)

+0

но как я могу определить эти идентификаторы? вы имеете в виду DELETE 200 раз? –

+0

Не нужно удалять 200 раз. См. Мое редактирование. –

+0

Как я могу убедиться, что эти 200 строк, которые были удалены, это те 200 строк, которые я выбрал ранее? –

-1

MySql:

SELECT * FROM table1 
ORDER BY ID DESC 
LIMIT 200 

Sql Server:

Select FROM table1 
    WHERE id IN 
    (
     SELECT TOP 200 
     id 
     FROM table1 
     WHERE YourConditions 
     ORDER BY ExplicitSortOrder 
    ) 

выше запроса будут удалены определенное подмножество строк, вы должны явно указать порядок подзапроса:

Для удаления 200 строк используйте приведенный выше запрос путем изменения Select ключевого слова Delete

+0

@DownVoters может я знаю, что не так с моим запросом. это поможет определить мою ошибку – Haji

+0

Я думаю, что не будет TOP n на mysql, поэтому может быть downvote – sumit

Смежные вопросы