返回SQL SELECT查询等于行数

时间:2015-09-11 20:08:49

标签: java android sql sqlite

我有一个问题:

SELECT * FROM TABLE_NAME 
WHERE category=1 AND NUMBER=4 OR NUMBER=10 
ORDER BY RANDOM() LIMIT 10

我希望这个查询的结果是一个随机的5行,其中category = 1,number = 4,还有一个随机的5行,其中category = 1,number = 10。 所以它应该等于(!)在AND之后的WHERE中指定的行数(五个结果,数字= 4,五个结果,数字= 10)。例如,如果将LIMIT 10更改为LIMIT 20,则第一个结果必须为10行,第二个结果必须为10行。 如果我运行由我编写查询它会随机生成,例如7行数字= 4,3行数字= 10。

是否可以实现这一点,或告诉我可以用什么来实现这样的结果?

1 个答案:

答案 0 :(得分:1)

使用union all的正确语法:

(SELECT t.*
 FROM TABLE_NAME t
 WHERE category = 1 AND NUMBER = 4
 ORDER BY RAND()
 LIMIT 10
) UNION ALL
(SELECT t.*
 FROM TABLE_NAME t
 WHERE category = 1 AND NUMBER = 10
 ORDER BY RAND()
 LIMIT 10
);

这假设每个组都有足够数量的记录。

rand()对于您想要完成的任务可能不是必需的。如果你有大量的数据,那么它会增加很多开销。