MYSQL选择表单用户表,其中一半是女性,一半是男性

时间:2016-10-06 18:19:08

标签: mysql

我正在寻找一种方法,从名为'gender'的字段的用户表中进行选择  其中50%的结果具有价值'女性'和50%的男人' 这是我的实际查询:

SELECT *
          FROM geo_sorted_users_de_prod AS r1 JOIN
               (SELECT CEIL(RAND() *
                             (SELECT MAX(id)
                                FROM geo_sorted_users_de_prod)) AS id )
                AS r2
         WHERE r1.id >= r2.id
         AND Length(descr) > 10
         ORDER BY r1.id ASC
         LIMIT 11

我想避免,运行2个查询。

1 个答案:

答案 0 :(得分:0)

想象一下,YOUR_TABLE是您的追问random_id,但没有LIMIT 11

第1步 :分配row_number()。在mySql中没有它所以你需要使用变量来模拟。

SELECT t.*, 
     @rownum := if(gender = @gender, @rownum + 1, 1) AS RowNumber,
     @gender := gender  
FROM YOUR_TABLE t, 
     (SELECT @rownum := 0, @gender = '') r
ORDER BY gender, random_id

第2步 :选择您想要的每个类别的数量。因为您order by random_id每个类别都会选择随机行。

SELECT *
FROM Step1
WHERE (gender = 'male' and RowNumber <= 5)
   OR (gender = 'female' and RowNumber <= 6)