PostgreSQL随机取一条记录

【需求例子】

1、群聊机器人,根据群友聊天内容,随机返回值,比如点餐:群友:今天中午吃什么?机器人:麻辣香锅(随机返回的值)

用SQL来实现从表里随机返回记录。

2、[业务需求]比如A系统数据因业务需要(同步、系统替换、接口测试等涉及到数据传输测试的业务)导入到B系统,需要A系统提供表结构及若干行(指定数量)样例数据。由于用limit返回的记录固定,不能当做是随机记录(尤其是通过limit始终取到的是不符合业务规范的数据),因此需要加随机函数从表中随机取记录,每次执行查出的记录是不同的(数据量越大相同概率越小)。

【思路】

1、我们可以在菜单表里加一个自增列计数,然后随机函数取值。但是这样有个缺点,假如只有10个菜品,随机数=20,那不就返回空了吗?所以这个方法不太行。

2、还是要用到随机函数,查询语句  select 随机函数,列 from 表  ,由于每次运行select,随机函数返回的值都不一样,所以可以考虑将随机函数作为列进行排序,限制返回1条,取到随机值。

【示例】

select *,random() from tablename    /*一般不要直接用*,此处用*仅做示例用*/
order by random
limit 1

【小结】

1、这个查询语句相当于查询某表时带上一列随机函数,由于每次查询时,随机函数返回值不一样,所以能够返回随机记录。

posted @   丁丁要学习  阅读(932)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
点击右上角即可分享
微信分享提示