php - Mysql使用不同的过滤参数选择相同数量的记录

标签 php mysql

我正在用 php 开发抽奖项目,我需要的是以下内容,我有 4000 个用户,选择应如下所示:

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

如您所见,我有不同数量的用户;他们要求我在每次抽奖中选择 1000 个用户,但这 1000 个用户应该在员工 ID 之间平均分配,例如从以 1 开头的员工中选择 200 行,从以 2 开头的员工中选择其他 200 行,依此类推。

我完成了这个任务,但是使用了多个选择语句,比如从以 1 开头的员工中随机选择 200 行,并为以 2 开头的员工选择另一个 SQL ......;有没有更好的解决方案可以在一条 SQL 语句中完成此任务?

最佳答案

如果有人对@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()

关于php - Mysql使用不同的过滤参数选择相同数量的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34316899/

相关文章:

php - 使用变量和分页计算行数?

javascript - 在 Highcharts 中加载多个大型数据集

c++ - MySQL Connect/C++ 64 位构建错误

php - 为什么导入 CSV 文件时会添加额外的空行?

php - 是否可以以选项卡形式将 MySQL 记录 'id' 从一个选项卡传递到另一个选项卡?

php - 数据库操作框架

mysql - mysql FULLTEXT bool 模式搜索缺少结果

php - Lightbox 中的 Facebook API 登录和权限请求。是否可以?

php - 如何将 mysql 表导入 SOLR

mysql - 将数据表转换/处理为自定义 PSObject 的最快方法