首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据唯一和预定的顺序(而不是asc或desc )从mysql db对数据进行排序。

问如何根据唯一和预定的顺序(而不是asc或desc )从mysql db对数据进行排序。
EN

Stack Overflow用户
提问于 2014-06-22 21:39:34
回答 2查看 63关注 0票数 1

我需要向一名学生展示1000个试题,每页10个。

问题在mysql表中,答案将放在另一个表中。

我需要每个学生的问题出现在一个比任何其他学生不同的预定顺序。当它们注册并放置在usermeta表中时,排序顺序是预先确定的。

在usermeta表中,有一列列出了应该显示问题的顺序。该列中的顺序对每个学生来说都是独一无二的,类似于下面的示例:8\\14\x{e76f}\x{e76f}( ...etc )。

向学生展示的第一个问题是问题#8,然后是问题#14,然后是问题#97,等等,如清单10所示。

我不需要整理asc或desc的问题。此外,如果可以帮助找到解决方案,我可以更改db结构。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-22 21:56:14

此外,如果可以帮助找到解决方案,我可以更改db结构。

如果可以更改db结构,那么与其将排序顺序存储为管道分隔的字符串,不如将其存储在一个单独的表中,该表将每个问题映射到它应该显示给给定学生的顺序。即

代码语言:javascript
复制
student_id, sort_order, question_id
1               1               8
1               2               2
1               3               97

然后加入你的排序表,当选择你的问题时,为一个特定的学生。

代码语言:javascript
复制
SELECT q.* FROM 
questions q
JOIN questions_sorting_order qso
ON q.id = qso.question_id
ORDER BY qso.sort_order
WHERE qso.student_id = :student_id
票数 1
EN

Stack Overflow用户

发布于 2014-06-22 21:49:48

代码语言:javascript
复制
SELECT * FROM ints;
+---+
| i |
+---+
| 0 |
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
| 8 |
| 9 |
+---+

SELECT i2.i*10+i1.i x
     , FIND_IN_SET(i2.i*10+i1.i,'8,14,97,54,21,37,54,61') y 
  FROM ints i1
     , ints i2
HAVING y > 0 
 ORDER 
    BY y;
+----+---+
| x  | y |
+----+---+
|  8 | 1 |
| 14 | 2 |
| 97 | 3 |
| 54 | 4 |
| 21 | 5 |
| 37 | 6 |
| 61 | 8 |
+----+---+

注意,第二次忽略54。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24355995

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档