关于#sql#的问题:需要在mysql数据库对表进行排序

需要在mysql数据库做一个表,类似这样,

img


对所有学科进行分类,语文用2表示,英语用4表示,数学用6表示,各科内容不变,其他学科依次延续,因为涉及学科太多,各位大神,如何快速批处理?求助

这个问题的核心在于如何动态的将所有学科都赋予一个以2递增的数字类别

select b.num,a.学科中文字段,a.学科内容 
from xueke_table a left join (
SELECT @row_number:=@row_number + 2 as num,s.学科中文字段
FROM (select distinct  学科中文字段 from xueke_table ) s,(select @orw_number:=0) t ) b

很简单:
假设你第一张表是Table1 , 表结构是 (id , crouse_type , crouse_name)
第二张表是Table2 , 表结构是 (id , tid , crouse_name, other)
其中tid是第一张表的关键字 id , 现在要把这两张表关联并按照顺序查出来:

select  t1.crouse_type, t1.crouse_name, t2.id,t2.other from Table1 t1 
join Table2 t2 on t1.id=t2.tid
order by t1.id 

参考:


select case A when '语文' then 2 when '英语' then 4 when '数学' then 6 end ,B from 表名

1、创建一张表,存放树状结构数据;
2、表字段至少包括:id,name,pid;name:学科名称,pid:父类ID;
3、Excel数据中添加pid,比如说语文、数学这些的pid是“0”,语文的id是“2”,英语的id是“4”,这样古诗的id根据需要顺延就可以,pid是“2”,文言文的id也是顺延,pid也是“2”,同理,听力和阅读理解的pid都是“4”;
4、Excel数据导入数据库表即可;
5、最终的表结构是每条数据都有pid,结构是一棵树。

这个题其实有个矛盾点,
你是想有唯一的排序规则还是随机排序(每次顺序都不一样)?
如果是唯一排序,让每次查询结果一样,那肯定得手动定义每个学科的编号,可以用一个表来定义,或者在查询sql后面加上

order by case when a='语文' then 2 when a='英语' then 4 ....(枚举所有) end

如果只是想随机取个序号,那就不一定语文非得是2,随便弄个序号乘以2就是了

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632