2011-11-09 3 views
1

У меня есть это решение в настоящее время:Выберите случайную запись из MySQL с где предложение

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 с предложением where (where is_valid = 1)?

ответ

6

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

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

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

0

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

SELECT * 
FROM bases 
WHERE is_valid=1 AND user_id = <user_id> 
ORDER BY RAND() 
LIMIT 1; 
Смежные вопросы