当前位置: 代码迷 >> Eclipse >> 执行SQL语句出错,该如何解决
  详细解决方案

执行SQL语句出错,该如何解决

热度:16   发布时间:2016-04-23 00:37:10.0
执行SQL语句出错
String sql2="select cou_name from course,courseinfo,grade "+
             "where grade.cou_id=course.cou_id "+
            "and grade.cou_id=courseinfo.cou_id "+
            "and grade.stu_id='"+stu_id+"' "+
            "and grade.isdual=0 "+
            "and (courseinfo.cou_day,courseinfo.cou_time) in "+
            "(select cou_day,cou_time from courseinfo where "+
            "cou_id='"+cou_id+"')";
 rs=stmt.executeQuery(sql2);

以上代码运行报错显示

这段语句功能是判断是否与已经选的课程时间冲突的
 (courseinfo.cou_day,courseinfo.cou_time) in "+"(select cou_day,cou_time from courseinfo where "+ "cou_id='"+cou_id+"')"这块语句有问题的,我拿掉了就正常了,请问这部分SQL语句该怎么写?
------解决方案--------------------
Quote: 引用:

String sql2="select cou_name from course,courseinfo,grade "+
                             "where grade.cou_id=course.cou_id "+
                            "and grade.cou_id=courseinfo.cou_id "+
                            "and grade.stu_id='"+stu_id+"' "+
                            "and grade.isdual=0 "+
                            "and (courseinfo.cou_day,courseinfo.cou_time) in "+
                            "(select cou_day,cou_time from courseinfo where "+
                            "cou_id='"+cou_id+"')";
                     rs=stmt.executeQuery(sql2);
标红部分有问题,sql语句不能这样写in前面的字段应该只有一个而且in后面的结果集应该是同一种数据类型+1
------解决方案--------------------
2L的说法是错的。
in前可以多列,但要和后面的子查询的列数相同,类型兼容。
楼主先把 sql打印出来再仔细检查一下,再直接到数据库里查看报什么错。
  相关解决方案