gpt4 book ai didi

sql - 在WHERE子句中使用随机函数

转载 作者:行者123 更新时间:2023-12-03 18:45:00 24 4
gpt4 key购买 nike

在我的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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com