Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql abs(random())%SomeNumberCreateThanzero是否可以返回零?_Sql_Sqlite - Fatal编程技术网

Sql abs(random())%SomeNumberCreateThanzero是否可以返回零?

Sql abs(random())%SomeNumberCreateThanzero是否可以返回零?,sql,sqlite,Sql,Sqlite,我在另一个答案中看到这是ORDER BY random()的另一种选择。我需要确保id始终大于零。我是否必须将=更改为?因为x%y返回0当x是y的倍数时,答案是“是的,您的表达式可以返回0” 因此,如果id必须大于0,则需要使用而不是=。当然,如果模运算符没有返回0,您仍然可以使用>而不是=,您会得到相同的效果。因为x%y在x是y的倍数时返回0,答案是“是的,您的表达式可以返回0” 因此,如果id必须大于0,则需要使用而不是=。当然,如果模运算符没有返回0,您仍然可以使用而不是=,您将获得相同的

我在另一个答案中看到这是ORDER BY random()的另一种选择。我需要确保
id
始终大于零。我是否必须将
=
更改为

因为
x%y
返回0当
x
y
的倍数时,答案是“是的,您的表达式可以返回0”


因此,如果
id
必须大于0,则需要使用
而不是
=
。当然,如果模运算符没有返回0,您仍然可以使用
>
而不是
=
,您会得到相同的效果。

因为
x%y
x
y
的倍数时返回0,答案是“是的,您的表达式可以返回0”


因此,如果
id
必须大于0,则需要使用
而不是
=
。当然,如果模运算符没有返回0,您仍然可以使用
而不是
=
,您将获得相同的效果。

是。如果
abs(random())
返回
max(id)
的值,则模的结果将为零。由于
abs(random())
可以返回0到9223372036854775807之间的任何值,因此这绝对是可能的。

是。如果
abs(random())
返回
max(id)
的值,则模的结果将为零。由于
abs(random())
可以返回0和9223372036854775807之间的任何值,这是绝对可能的。

是的,它可以通过两种方式返回0

考虑
3%3==0
6%3==0
,等等。如果
random()
恰好是
max(id)
或其偶数除法器,则将得到0


random()
也可以返回0和
0%anything==0
,这是另一种可能性。

是的,它可以通过两种方式返回0

考虑
3%3==0
6%3==0
,等等。如果
random()
恰好是
max(id)
或其偶数除法器,则将得到0


random()
也可以返回0和
0%anything==0
,这是另一种可能性。

是的,它应该是>,因为模除可以返回0(
a mod a==0
0 mod a==0
)。此外,您可能需要检查
(选择max(id)
是否不为null/0(
a mod 0
在某些系统中未定义,或者a)

是的,它应该是>,因为模除可以返回0(
a mod a==0
0 mod a==0
)。此外,您可能需要检查
(选择max(id)
是否不为null/0)(
mod 0
在某些系统中未定义,或者a)

听起来1可能永远不会返回。听起来1可能永远不会返回。感谢您解释random()的范围。感谢您解释random()的范围。
SELECT foo FROM bar
WHERE id >= (abs(random()) % (SELECT max(id) FROM bar))
LIMIT 1;