sql题目挑战

先看表结构,一共5张表

在这里插入图片描述

问题描述

获取模拟考试的reaName,stuid,classes,title,以及对应的result,usetime,submitTime,momery,language,并按照提交时间的降序排序

参考解答

    <select id="SatusListandSearch" resultType="com.swust.power.entity.test_paper.StatusTable">
        select a.submitTime,a.result,a.momery,a.language,a.codelen,b.title,c.stuid,c.classes,d.realName from exam_score as a
        left join problem as b on a.pid=b.pid
        left join cprogram_user_info as c on a.uid=c.uid
        left join user as d on a.uid=d.uid
        left join test_paper as e on a.tid=e.id
        <where>
            a.result is not null and e.model=0
        </where>
        order by a.submitTime desc
    </select>

进阶挑战

在上个问题的基础上,要根据stuid,title,result(三个值可能为null) 进行查询呢?

    <select id="SatusListandSearch" resultType="com.swust.power.entity.test_paper.StatusTable">
        select a.submitTime,a.result,a.momery,a.language,a.codelen,b.title,c.stuid,c.classes,d.realName from exam_score as a
        left join problem as b on a.pid=b.pid
        left join cprogram_user_info as c on a.uid=c.uid
        left join user as d on a.uid=d.uid
        left join test_paper as e on a.tid=e.id
        <where>
            a.result is not null and e.model=0
            <if test="statusvo.stuid!=null">
                and  c.stuid=#{statusvo.stuid}
            </if>
            <if test="statusvo.title!=null">
                and b.title like "%${statusvo.title}%"
            </if>
            <if test="statusvo.result!=null">
                and a.result=#{statusvo.result}
            </if>
        </where>
        order by a.submitTime desc
    </select>

注释

该sql是xml中的写法,其中

resultType="com.swust.power.entity.test_paper.StatusTable"

的实体类定义如下:

@Data
public class StatusTable {
    // from cprogram_user_info
    private String stuid;
    // from cprogram_user_info
    private  String classes;
    //from user
    private String realName;

    /**
     * 消耗时间
     */

    private  String usetime;
    /**
     * 消耗内存
     */

    private  String momery;
    /**
     * 语言
     */

    private  String language;
    /**
     * 代码长度
     */

    private  String codelen;
    /**
     * 结果
     */

    private  String result;

    private String submitTime;

    //from problem
    private String title;

}

思路

理清表之间的连接关系即可

结果示例

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值