我想从表中随机选择一个行,其中表Number列中可以存在多个最小值。例如,我有一个包含标题,数字和类别的表,如下所示:

提努卡

0 c7

W 0 c7

Y 0 c7

C 0 c9

高3 c9

此查询将返回一个随机行,其中Number等于0并且Ca等于c7:
SELECT * FROM Table WHERE(((Ca ='c7')And Nu =(SELECT min(Nu)FROM Table)))ORDER BY RANDOM()LIMIT 1;

但是当表包含:

提努卡

3 c7

W 1 c7

Y 5 c7

C 0 c9

高3 c9

上面的查询不返回任何内容。我希望返回“ W 1 c7”行。我究竟做错了什么?

最佳答案

无论Ti是什么,您的子查询看起来总是匹配Nu = 0,并且由于没有行包含Nu = 0和Ca =“ c7”,因此它不返回任何内容。您可能需要这样的东西:

SELECT * FROM [Table] x
WHERE Ca = 'c7' And Nu = (SELECT min(Nu) FROM [Table] where x.Ca = Ca)
ORDER BY RANDOM() LIMIT 1;


如果添加包含Ti =“ Z”,Nu = 1,Ca =“ c7”的另一行,则应该在返回的行中看到Ti值在“ W”和“ Z”之间翻转。

关于sqlite - SQLite如何为所有情况随机选择最小值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51032274/

10-10 22:30