Получение случайных данных из сгруппированных данных в одной таблице - PullRequest
1 голос
/ 09 марта 2011

Вот ситуация.У меня есть одна таблица базы данных со столбцами ниже:

  • PATIENT_ID
  • PATIENT_GROUP
  • FIRSTNAME
  • LASTNAME
  • ADDRESS

Я хочу получить PATIENT_ID случайным образом от определенного PATIENT_GROUP.

Есть 5 PATIENT_GROUP только с общей строкой в ​​таблицесоставляет около 10000 (10K).Количество данных на PATIENT_GROUP не одинаково.Некоторые PATIENT_GROUP имеют меньше данных, чем другие.Знаете ли вы самый быстрый возможный SQL-запрос для этой задачи?Кстати, я использую SQLite3.

Когда нет PATIENT_GROUP, я мог бы задать этот запрос:

SELECT PATIENT_ID FROM TB_Patient 
WHERE rowid >= (ABS(RANDOM()) % (SELECT MAX(rowid) FROM TB_Patient)) LIMIT 1

Какой ваш лучший подход для решения этой проблемы?Цель - максимально быстрый запрос.

Спасибо.

1 Ответ

1 голос
/ 09 марта 2011

попробуйте использовать следующий запрос с различными <group_id> в зависимости от группы пациентов, на которой вы работаете:

SELECT PATIENT_ID 
FROM TB_Patient 
WHERE PATIENT_GROUP = <group_id> 
ORDER BY RANDOM() 
LIMIT 1

Я не уверен, что это быстрее, но с ним должно быть проще работать.

Удачи!

...