Итак, я знаю, что вопрос о получении случайной строки в базе данных SQL был опубликован (даже более одного раза), и он помог мне добраться до этого запроса SQL:
"SELECT column FROM table WHERE id IN (SELECT id FROM table ORDER BY RANDOM() LIMIT 1)";
если я хорошо понимаю, порядок по рандому не эффективен на большом столе, но если вы используете его с идентификатором, это достаточно быстро.
Итак, я попробовал, кажется, что это работает хорошо, но затем я хотел добавить критерий, поэтому я немного его изменил:
"SELECT column1 FROM table WHERE (column2 LIKE '" + value + "' AND id IN (SELECT id FROM table ORDER BY RANDOM() LIMIT 1)";
Чтобы быть более понятным, у меня есть эта таблица: загружен = (идентификатор, имя файла, владелец).
Я хочу выбрать случайное имя файла от данного владельца. Что дает мне это:
"SELECT filename FROM uploaded WHERE (owner LIKE '" + owner + "' AND id IN (SELECT id FROM uploaded ORDER BY RANDOM() LIMIT 1))";
Проблема в том, что иногда rs.next ложен (что означает, что у меня нет результата). Тем не менее, я печатаю БД перед поиском имени файла, поэтому я уверен, что владелец имеет связанное имя файла в этой БД. Может быть только один, но все еще один.
Это подводит меня к вопросу: что не так с моим запросом?