MySQL:选择特定用户ID并随机完成限制

时间:2015-04-26 16:31:27

标签: mysql sql

我有以下用户ID列表:(2,3,5),需要从"用户"中选择5个用户表,列表中具有高优先级的用户,然后使用" rand"完成限制。用户,

用户表结构:

id     name
0      John
1      Adam
2      MM
3      Saly
4      Sara
5      Alx
6      Jak
7      Sarah
8      lynda
9      Riyan

我需要选择具有特定ID优先级的5个用户:

示例1,如果用户ID列表=(2,3,5) 结果:

id     name
2      MM
3      Saly
5      Alx
0      John
6      Jak

示例2,如果用户ID列表=(5,6,0,1,2) 结果:

id     name
5      Alx
6      Jak
0      John
1      Adam
2      MM

感谢,

3 个答案:

答案 0 :(得分:0)

首先获得匹配ID但最多只有5位用户的用户:

SELECT id, name FROM(
  SELECT id, name, 0 p FROM users WHERE id IN (...)
  UNION
  SELECT id, name, 1 p FROM users WHERE id NOT IN(...)
) tab
ORDER BY p
LIMIT 5;

第一个选择搜索具有给定ID的用户,第二个选择搜索所有其他用户。

p用于将具有匹配ID的用户放在otehr用户之前。

答案 1 :(得分:0)

尝试这样的事情:

     select * from
     (
       select id , name 
       from users where id in (2,3,5)
       union all
       (select temp.* from (select * from users where id not in (2,3,5) 
        order by rand() limit 2) temp )
      ) tab
      limit 5
      ;

答案 2 :(得分:0)

选项1

SELECT * FROM `users` WHERE id >= (SELECT FLOOR( MAX(id) * RAND()) FROM `users` ) ORDER BY id LIMIT 1;

选项2

SELECT * FROM `users` ORDER BY RAND() LIMIT 0,1;