#mysql #random #where
#mysql #Случайный #предложение where
Вопрос:
Теперь у меня есть это решение:
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)?
Ответ №1:
Попробуйте использовать предложение ORDER BY . Попробуй это:
SELECT COUNT(user_id) FROM bases WHERE user_id = " userId " AND is_valid = 1 ORDER BY RAND() LIMIT 1
Это вернуло бы одну случайную строку из таблицы.
Ответ №2:
Я не понял, что вы пытаетесь сделать, но это может вам помочь (исходя из вашего вопроса):
SELECT *
FROM bases
WHERE is_valid=1 AND user_id = <user_id>
ORDER BY RAND()
LIMIT 1;