2014-09-18 2 views
0

У меня есть много записей для некоторых устройств в одной таблице, и я должен ограничить размер для каждого устройства:Limitting данные в таблицах MySql

ENTIRES 
-ID 
-DEVICE_ID 
-TIMESTAMP 
-VALUE 

Я хочу, чтобы ограничить, например, 100 записей для каждого устройства. В монго я бы использовал ограниченные коллекции. Как я могу сделать это в MySql?

Я могу периодически запускать счет и удалять запросы, но, может быть, есть некоторые лучшие решения?

ответ

1

Подсчитайте количество записей с DEVICE_ID

SELECT count(*) from ENTIRES where DEVICE_ID = <device_id> 

Тогда каждый раз, когда вы хотите, чтобы добавить запись в первой таблице, установите соответствующий счет и если меньше чем 100 сделать ваш вкладыш

I прочитайте, что вы можете сделать условную вставку, но я не уверен, что это может быть применено к вашему делу.

+0

Почему бы не использовать функцию count? Я хочу всегда вставлять новые значения и удалять старые –

+0

Использование count - хорошая идея, я редактировал свой ответ для использования count – SkyDream

+0

Если вы хотите сохранить 100 новых значений, то если вы auto_increment ENTIRES.ID, вы можете «выбрать» из ENTIRES, где DEVICE_ID = порядок по идентификатору ", затем удалите запись с меньшим идентификатором после добавления новой записи. – SkyDream

1

Вы можете использовать триггер до сохранения, чтобы удалить записи из таблицы (если число> 100), прежде чем вставлять новую строку

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