我正在寻找一种方法,从名为'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个查询。
答案 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)