我有一个MySQL表,其中包含一个名为“priority”的列。该列可以有两个值:高或低。我想从表中随机选择8条记录,但我希望其中6条是高优先级,其中2条是低优先级。如果可能的话,我想在一个SQL语句中做到这一点。有没有办法在一个查询中根据这种标准做两个LIMITS?
答案 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告诉你如何修复它。您所做的就是用括号括起查询。谢谢你的帮助!