在MySQL中随机选择有两个条件的有限数量的记录

时间:2009-10-21 16:01:09

标签: sql mysql

我有一个MySQL表,其中包含一个名为“priority”的列。该列可以有两个值:高或低。我想从表中随机选择8条记录,但我希望其中6条是高优先级,其中2条是低优先级。如果可能的话,我想在一个SQL语句中做到这一点。有没有办法在一个查询中根据这种标准做两个LIMITS?

4 个答案:

答案 0 :(得分:7)

SELECT t1.*
  FROM table t1
 WHERE priority = 'high'
 ORDER BY rand() Limit 8
UNION ALL
SELECT t1.*
  FROM table t1
 WHERE priority = 'low'
 ORDER BY rand() Limit 2

答案 1 :(得分:0)

使用联合,因此基本上有两个select语句。

答案 2 :(得分:0)

使用联盟:

SELECT * FROM table WHERE priority = 'high' ORDER BY RAND() LIMIT 8 
UNION ALL
SELECT * FROM table WHERE priority = 'low' ORDER BY RAND() LIMIT 2 

答案 3 :(得分:0)

对于那些遇到同样问题的人,我收到一条错误,上面写着“UNION和ORDER BY的使用不正确”。然后我发现this page告诉你如何修复它。您所做的就是用括号括起查询。谢谢你的帮助!