You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL学院席位分配算法中如何将静态配额判断替换为剩余席位计算

录取分配算法SQL修改方案

核心修改思路

把你提供的剩余席位计算逻辑作为临时子查询,替换原有直接关联tblAcademy的逻辑,关联后过滤remainingSeat > 0的学院即可。

修改后的scmd2.CommandText代码

scmd2.CommandText = @"
select acad_Id,stud_Id from(
    SELECT tas.*, DENSE_RANK() OVER (PARTITION BY stud_id ORDER BY order_preference) AS row_id 
    FROM (
        -- 带剩余席位计算的学院临时表
        SELECT distinct ta.acad_Id, ta.numberOfSeats - Count(ts.acad_id) OVER (PARTITION BY ta.acad_Id) as remainingSeat
        FROM tblAcademy ta 
        LEFT JOIN tblStudent ts ON ta.acad_Id = ts.acad_Id
    ) ta 
    JOIN tblAcademy_Selection tas ON ta.acad_Id = tas.acad_Id 
    WHERE ta.remainingSeat > 0 and stud_Id = @studId
) DTL WHERE row_id = 1
";
// 补充参数化查询避免SQL注入风险
scmd2.Parameters.AddWithValue("@studId", array[a]);

优化说明

  • 原剩余席位查询的隐式连接调整为LEFT JOIN,逻辑更清晰,也能正确计算还没有任何学生录取的学院的剩余席位
  • 替换了原有的字符串拼接传参逻辑为参数化查询,避免SQL注入风险
  • 单次仅查询单个学生的志愿,用=替代IN查询性能更好

内容的提问来源于stack exchange,提问作者DeathStriker2

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 01:30:03