在我的WHERE子句中,我使用random函数获取1到5之间的随机数。但是结果始终为空,没有任何错误。
这里是:
Select Question._id, question_text, question_type, topic, favorite,
picture_text, picture_src, video_text, video_src, info_title, info_text,
info_picture_src, topic_text
FROM Question
LEFT JOIN Question_Lv ON Question._id = Question_Lv.question_id
LEFT JOIN Info ON Question._id = Info.question_id
LEFT JOIN Info_Lv ON Question._id = Info_Lv.question_id
LEFT JOIN Picture ON Question._id = Picture.question_id
LEFT JOIN Picture_Lv ON Question._id = Picture_Lv.question_id
LEFT JOIN Video ON Question._id = Video.question_id
LEFT JOIN Video_Lv ON Question._id = Video_Lv.question_id
LEFT JOIN Topic ON Question.topic = Topic._id
LEFT JOIN Topic_Lv ON Topic._id = Topic_Lv.topic_id
LEFT JOIN Exam ON Question._id = Exam.question_id
WHERE Exam.exam = (random() * 5+ 1)
在这种情况下随机函数在做什么,以及如何正确使用它?
最佳答案
来自Docs
随机()
random()函数返回介于之间的伪随机整数
-9223372036854775808和+9223372036854775807。
因此,您的随机值不在您假设的0到1之间,因此没有行。
通过将其除以2×9223372036854775808并加上0.5,可以得到0到1之间的值。
random() / 18446744073709551616 + 0.5
因此,您的where子句变为:
WHERE Exam.exam = ((random() / 18446744073709551616 + 0.5) * 5 + 1)
与以下内容相同:
WHERE Exam.exam = 5 * random() / 18446744073709551616 + 3.5
另外,您可能需要舍入右侧计算的输出,因此:
WHERE Exam.exam = round(5 * random() / 18446744073709551616 + 3.5)
关于sql - 在WHERE子句中使用随机函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41532552/