居十四 2018-12-17 10:03 采纳率: 50%
浏览 756
已采纳

MySQL如何实现随机查询时有对查询条件的判断?

首先,实现随机的方法我知道.问题是如何在查询随机数据时能够对条件进行判断

举个例子

我想让每次返回的数据都是随机的且要满足下面的一个条件.不要写死一个一个值去判断,不去count()具体的值

条件 : 随机查询的数据满足每个专业的最少有一个人

图片说明

我的想法是

  • 先查询出所有的数据(随机)
  • 再通过一个存贮函数来判断条件是否达到
  • 达到后,结束

    通过下面的代码,能够查询出每个专业的人数,可以用来做判断,是否满足条件,但是这是查询全部的.

    当我想要查询只要10个人时,下面的代码查的是所有人.

    但是,我要是先随机查询出10个人,那么这10个人不一定会满足条件.如果一直随机查询直到满足条件,那就太浪费资源了

SELECT  COUNT(t.zhuanye) c
FROM t_expert AS t
GROUP BY t.zhuanye
HAVING c>=2

现在,我疑惑的地方是这个存贮函数如何写,怎么样才能在查到相应的数据后,停止查询.

我对MySQL只是简单了解.这个问题,困惑我很久了.

  • 写回答

4条回答

  • 居十四 2018-12-18 10:31
    关注

    遇到复杂逻辑的需求.不要寄托于数据库.而且数据对于一些不太复杂的逻辑来讲速度很快.

    但是,一旦涉及我这种看起来还可以,但实际上要求很是复杂.

    不如先把所有数据查出来,再去按照需求去自己取值.

    但是这就有涉及到**另一个问题**

    • 在数据量比较大的时候,不能将所有的数据都一次性取出来.只能取一部分.
    • 而这一部分数据在遍历完之后,可以能也不会满足需求.
    • 这时,还是需要再去取数据.又增加了数据库的访问次数.而且还不一定需要多少次.

    所以,我想,按分层查询,假设男女最少各为3人.
    那么,为了避免1000个男的,就只有6个女的这种情况(只为举例说明)
    所以,我先查询男的取3个,再查询女的取3个.

    但是这种情况,只能时候,字段值比较少的时候,多了还是麻烦.我现在还没有想好.等有空闲了,我再好好琢磨一下


    2018-12-19

    我想到,可以使用使用 IN() OR IN() 来减少数据量,查询时可以使用MySQL上的 FIND_SET_IN() 函数来简化

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?