Mysql选择查询比例为3:2

时间:2014-11-21 05:56:10

标签: mysql select

我正在研究一个有趣的查询。有一个像下面这样的表,并希望根据他们的login_status选择30行,比例为3:2。例如:30个中,活跃用户 - 应该是18个而非活动用户 - 应该是12.因此,对于每3个活跃用户,我应该得到2个非活动用户,最终总数应为30个。

有人能提供一些关于如何达到要求结果的想法吗?

user_ref_id   last_login            login_status
      28369   2014-06-04 01:56:15   Not Active
      11693   2013-10-09 00:19:17   Not Active
      12566   2014-11-08 12:13:37   Active
       9618   2014-11-15 17:04:47   Active
      10270   2013-10-09 05:57:00   Not Active
      20832   2014-01-24 07:24:46   Not Active
      19297   2014-11-20 18:57:59   Active
      14333   2014-01-23 23:24:37   Not Active
      14785   2013-11-09 11:12:49   Not Active
      18325   2014-04-12 22:54:10   Not Active
      14748   2013-11-07 08:03:34   Not Active
      20606   2014-05-20 04:30:35   Not Active
      11812   2014-11-08 17:42:06   Active
      15688   2013-11-18 04:43:23   Not Active
      14949   2013-11-18 11:07:42   Not Active
      18224   2014-11-08 16:30:41   Active
      12202   2013-12-13 23:01:40   Not Active
      20309   2014-03-13 06:37:51   Not Active
      15089   2014-10-18 17:36:46   Not Active
      10709   2014-09-24 22:31:11   Not Active
      18539   2014-11-05 17:48:12   Active
      11350   2013-10-07 23:50:51   Not Active
      13134   2014-10-18 14:29:18   Not Active
      13636   2014-09-12 17:20:03   Not Active
      15246   2014-11-17 00:28:34   Active
      16900   2013-11-25 03:28:38   Not Active
      15584   2014-10-22 19:11:16   Active
      16615   2014-10-14 17:55:39   Not Active
      19610   2013-12-17 02:38:26   Not Active
      20283   2014-09-27 07:34:51   Not Active

1 个答案:

答案 0 :(得分:0)

以下是使用union的一种方法,它提供了具有不同状态的随机行。

(select * from table1 where login_status='Active'
order by rand()
limit 18)
union
(select * from table1 where login_status='Not Active'
order by rand()
limit 12)