Mysql选择具有不同过滤参数的相同数量的记录

时间:2015-12-16 16:14:11

标签: php mysql

我正在研究用于在PHP中绘制奖品的项目,以及我需要的是以下内容,我有4000个用户,选择应该如下:

EMP_ID
------
1123
1420
1340
2301
2330
4430
4321
3456
3425
7753
4256
4895

如你所见,我有不同数量的用户;并且他们在每次抽奖时都要求我选择1000个用户,但1000个员工之间应该等于等于从员工中选择200行(以1开头)和其他200个来自以2开头的员工等等。

我完成了这个但是有多个选择语句,比如从员工中选择随机200行,以1开头,另一个SQL以员工开始,以2和.....开头;有没有更好的解决方案可以在一个SQL语句中实现这一点?

1 个答案:

答案 0 :(得分:0)

如果有人对@strawberry建议感兴趣,那就像这样

    select x.* from 
((SELECT a.`emp_id` FROM `emp_list` as a WHERE a.`flag` = '0' AND a.`emp_id` LIKE '1%' order by RAND() limit 200)
UNION
(SELECT b.`emp_id` FROM `emp_list` as b WHERE b.`flag` = '0' AND b.`emp_id` LIKE '2%' order by RAND() limit 200)
UNION
(SELECT c.`emp_id` FROM `emp_list` as c WHERE c.`flag` = '0' AND c.`emp_id` LIKE '3%' order by RAND() limit 200)
UNION
(SELECT d.`emp_id` FROM `emp_list` as d WHERE d.`flag` = '0' AND d.`emp_id` LIKE '4%' order by RAND() limit 200)
UNION
(SELECT g.`emp_id` FROM `emp_list` as g WHERE g.`flag` = '0' AND g.`emp_id` LIKE '7%' order by RAND() limit 200)
) as x order by RAND()