Найкращий спосіб ефективно видалити рядки SQL на Android

У моєму додатку є таблиця бази даних, в якій я хотів би зберегти лише десять найвищих числових значень. У стовпцях є ідентифікатор (унікальний), ім'я, оцінка.

Який найкращий спосіб для цього? чи повинен я вручну витягувати всі записи та видаляти за ідентифікатором? чи я можу використовувати SQL-виписку?

Дякую,

Бен

0
Якщо ви хочете зберегти лише 10 значень, скористайтеся файлом, для цього вам не потрібна реляційна база даних.
додано Автор Maurício Linhares, джерело
@ MaurícioLinhares Я не впевнений, що я згоден. SQL забезпечить йому деяку легкість доступу, що плоский файл не буде. І я не думаю, що накладні витрати sqlite виправдовують не використовувати його. Це sq Lite
додано Автор Kurtis Nusbaum, джерело
Це залежить від записів вашої таблиці бази даних. Якщо в меншому номері, то за допомогою запиту видаляються рядки.
додано Автор user370305, джерело

2 Відповіді

Потім, що ви можете зробити, це Trigger , які ви вставляєте для таблиці. Загалом, тригер перевірить, чи було в таблиці більше 10 рядків, і видалити найменші рядки. Тригер виглядатиме так:

CREATE TRIGGER clamp_trigger AFTER INSERT ON table_name
BEGIN
  DELETE FROM table_name
  WHERE column_name NOT IN (
  SELECT column_name 
  FROM table_name 
  ORDER BY column_name DESC
  LIMIT 10);
END;
3
додано
Спасибі, але я хочу лише 10 значень, які потрібно зберегти в базі даних, мені потрібно всього лише 10 кращих, і не хочете, щоб розмір мого додатка надто сильно збільшувався на телефоні користувачів
додано Автор Ben Taliadoros, джерело
Ви говорите, коли вставляю в стіл? Будь-яка ідея, як це виглядатиме? Мені важко дотримуватися прикладу. Спасибі, хоча
додано Автор Ben Taliadoros, джерело
Чи повинен я викликати тригер? або я просто чекаю наступної вставки, і вона запам'ятовує тригер?
додано Автор Ben Taliadoros, джерело
Див мою модифіковану відповідь, щоб вирішити цю проблему.
додано Автор Kurtis Nusbaum, джерело
Змінено мою відповідь, щоб навести приклад.
додано Автор Kurtis Nusbaum, джерело
Створивши тригер, вам нічого не потрібно робити. Вона завжди буде автоматично "спрацьовувати" після будь-якої вставки на столі.
додано Автор Kurtis Nusbaum, джерело

Я не впевнений 100% про SQLite, але в більш пізніх версіях MySQL, щось подібне працює

DELETE FROM table_name
WHERE column_name NOT IN (
SELECT column_name 
FROM table_name 
ORDER BY column_name DESC
LIMIT 10);

В принципі, виділіть все, що не знаходиться у верхній частині 10, і видаліть його

1
додано
Ооо, що схоже на те, що він повинен працювати, я спробую це! Дякую
додано Автор Ben Taliadoros, джерело
ІТ КПІ - Java
ІТ КПІ - Java
436 учасників

android_jobs_ua
android_jobs_ua
120 учасників

Публикуем вакансии и запросы на поиск работы по направлению Android. Здесь всё: full-time, part-time, remote и разовые подработки.

Mobile Dev Jobs UA
Mobile Dev Jobs UA
20 учасників

Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin, RN и т.д.