Выберите случайную запись из MySQL с предложением where - PullRequest
1 голос
/ 10 ноября 2011

У меня есть это решение сейчас:

rs = lState.executeQuery("SELECT FLOOR(RAND() * COUNT(*)) 
        FROM bases 
        WHERE user_id = " + userId + " AND is_valid = 1");

rs.next();
count = rs.getInt(1);

rs = lState.executeQuery("SELECT id, server, server_port, server_ssl,
        server_starttls, server_auth, email, password, auth_wholemail 
         FROM bases LIMIT " + count + ", 1");

Но это не работает, потому что FLOOR(RAND() * COUNT(*)) не возвращает идентификатор с is_valid = 1. Итак, как быстро выбрать случайную запись из MySQL с предложением где (где is_valid = 1)?

Ответы [ 3 ]

7 голосов
/ 10 ноября 2011

Попробуйте использовать предложение ORDER BY.Попробуйте это:

  SELECT COUNT(user_id) FROM bases WHERE user_id = " + userId + " AND is_valid = 1 ORDER BY RAND() LIMIT 1

Это вернет одну случайную строку из таблицы.

0 голосов
/ 10 ноября 2011
0 голосов
/ 10 ноября 2011

Я не понял, что вы пытаетесь сделать, но это может вам помочь (исходя из вашего вопроса):

SELECT * 
FROM bases 
WHERE is_valid=1 AND user_id = <user_id> 
ORDER BY RAND() 
LIMIT 1;
...