我想从表中随机选择一个行,其中表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/