【大数据存储】Java操作MySQL练习3

3表: Candidate

Id是该表的主键列。该表的每一行都包含关于候选对象的id和名称的信息。

8fbdadaee65c43f1a76cd11b1bd63f6e.png

表: Vote

Id是自动递增的主键。candidateId是id来自Candidate表的外键。该表的每一行决定了在选举中获得第i张选票的候选人。

7acece50327e48049aa798dea1af1425.png

问题:编写一个SQL查询来报告获胜候选人的名字(即获得最多选票的候选人)。生成测试用例以确保 只有一个候选人赢得选举。

结果格式:

输入:

输出:候选人B有2票。候选人C、D、E各有1票。 

 571f4784c80f4bc4a5d4d7d731ec88be.png

import java.sql.*;
public class test3 {

    // MySQL 8.0 以下版本 - JDBC 驱动名及数据库 URL
    static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
    static final String url = "jdbc:mysql://localhost:3306/student_course";

    // 数据库的用户名与密码,需要根据自己的设置
    static final String user = "root";
    static final String password = "123456";

    public static void main(String[] args) {
        Connection con = null;
        Statement sta = null;
        try{
            // 注册 JDBC 驱动
            Class.forName(JDBC_DRIVER);

            // 连接数据库
            con = DriverManager.getConnection(url,user,password);
            sta=con.createStatement();

            String s3 = "select name from student_course.candidate join student_course.vote " +
                    "on candidate.id = vote.candidateId group by name order by count(name) Desc limit 1;";
            //按名字出现的次数降序取第一个
            ResultSet rs3 = sta.executeQuery(s3);
            if(rs3.next()) {
                System.out.println("name");
                System.out.println(rs3.getString("name"));
            }
            // 完成后关闭
            sta.close();
            con.close();
        }catch(SQLException se){
            // 处理 JDBC 错误
            se.printStackTrace();
        }catch(Exception e){
            // 处理 Class.forName 错误
            e.printStackTrace();
        }finally{
            // 关闭资源
            try{
                if(sta!=null) sta.close();
            }catch(SQLException se2){
            }// 什么都不做
            try{
                if(con!=null) con.close();
            }catch(SQLException se){
                se.printStackTrace();
            }
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WiIsonEdwards

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值