使用where子句从MySQL中选择随机条目

Cla*_*ark 1 mysql random 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");
Run Code Online (Sandbox Code Playgroud)

但它不起作用,因为FLOOR(RAND() * COUNT(*))不是返回id is_valid = 1.那么如何从MySQL whith where子句(其中is_valid = 1)快速选择随机条目?

Jem*_*lus 7

尝试使用ORDER BY子句.试试这个:

  SELECT COUNT(user_id) FROM bases WHERE user_id = " + userId + " AND is_valid = 1 ORDER BY RAND() LIMIT 1
Run Code Online (Sandbox Code Playgroud)

这将从表中返回一个随机行.