是否可以选择使用大型数据库制作MySQL的Group_Concat函数,这超出了分组结果的限制?
从我的源表中考虑以下示例:
CoursesEntities ctx = new CoursesEntities();
// create 3 lists with relevant data and enters them to db
ctx.Departments.AddRange(departments);
ctx.Courses.AddRange(courses);
ctx.Specializtions.AddRange(specializations);
ctx.SaveChanges();
当我使用GROUP_CONCAT在选择表上查询等级calcultaion时,我得到以下大表:
Id, question, mark
10, 3, -10
10, 4, 0
10, 5, 2
10, 8, 1
我想得到以下内容:
Id, question, mark ,rank
10, 5, 2 ,1
10, 8, 1 ,2
10, 3, -10 ,0
10, 4, 0 ,0
供参考,我的查询如下:
Id, question, mark ,rank
10, 5, 2 ,1
10, 8, 1 ,2
10, 4, 0 ,3
10, 3, -10 ,4
此查询使用少量记录,我的数据库表有32,000行,并且没有显示正确的用户级别。
答案 0 :(得分:1)
因为"标记"可能会有重复的值。在32447记录和FIND_IN_SET中将找到第一个实例,意味着不需要第2个,第3个等 - 您可以使用GROUP_CONCAT中的DISTINCT省略重复值。
SELECT *,FIND_IN_SET( mark , (
SELECT GROUP_CONCAT( DISTINCT mark
ORDER BY mark DESC )
FROM exam_score )
) AS rank
FROM exam_score
ORDER BY rank asc