【问题标题】:How to select just one id from a set of repetitive records in SQL and select only one of the corresponding values如何从SQL中的一组重复记录中只选择一个id并只选择一个对应的值
【发布时间】:2022-01-14 19:49:28
【问题描述】:

所以我有一张名为 students_classrooms 的表,它代表学生和教室之间的关系。 我一直想知道是否有一种方法可以让每个教室只使用 SQL 查询随机分配学生。

寻找这样的结果: 课堂 - 学生 (2,3)(3,77)

学生是随机选择的。

我一直在尝试不同的配置解决方案,但它们似乎都不起作用,不胜感激任何建议,谢谢!!

SELECT student_id, classroom_id
from students_classrooms
where classroom_id in (2,3)

【问题讨论】:

  • 这能回答你的问题吗? MySQL select 10 random rows from 600K rows fast
  • 不,我需要的是从分配到每个教室的学生中随机抽取一名学生。所以第 2 班的 xe 只随机选择了一名学生,第 3 班也一样。

标签: mysql sql


【解决方案1】:

这是一个想法:

SELECT classroom_id,
       SUBSTRING_INDEX(GROUP_CONCAT(student_id ORDER BY RAND()),',',1) AS student
FROM students_classrooms 
WHERE classroom_id IN (2,3)
GROUP BY classroom_id;

使用GROUP_CONCAT(student_id ORDER BY RAND()),然后使用SUBSTRING_INDEX()提取出现在GROUP_CONCAT()列表中的第一个student_id

Fiddle

【讨论】:

    【解决方案2】:

    我认为你需要类似的东西:

    select ( 
             select t2.student_id 
             from students_classrooms t2 
             where t2.classroom_id = t1.classroom_id 
         order by rand() limit 1 
        ) as student_id,
              t1.classroom_id
    from students_classrooms t1
    group by classroom_id
    order by rand() ;
    

    子查询随机搜索同一张表,引用classic_id,生成随机列表

    Demo

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-03-30
      • 2012-03-31
      • 2015-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多