居十四 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 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 用matlab 设计一个不动点迭代法求解非线性方程组的代码
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试