Java 使用多个条件连接两个SQL语句以连续运行

Java 使用多个条件连接两个SQL语句以连续运行,java,sql,database,jdbc,Java,Sql,Database,Jdbc,我有一张如下所示的表: Row Student Major 1 Jenn Math 2 Jenn Science 3 Jenn CS 4 Mark English 5 Mark History 6 Steve Math 7 Steve Science 8 Steve Engineering 9

我有一张如下所示的表:

Row     Student   Major      
 1        Jenn    Math
 2        Jenn    Science
 3        Jenn    CS
 4        Mark    English
 5        Mark    History
 6        Steve   Math 
 7        Steve   Science
 8        Steve   Engineering
 9        Ann     Biology
 10       Ann     Chemistry
我试图在连续的行中寻找模式,学生从数学专业改为科学专业,然后改为第三专业,并标记这些值,这样我就可以:

 Row     Name    Major      Flagged_Values
 1        Jenn    Math
 2        Jenn    Science
 3        Jenn    CS                1
 4        Mark    English
 5        Mark    History
 6        Steve   Math 
 7        Steve   Science
 8        Steve   Engineering       1
 9        Ann     Biology
 10       Ann     Chemistry
在这种情况下,学生Jenn和Steve遇到了这个标准,所以他们会被标记为1

然后,我连续标记那些主修数学、科学和工程的学生,在本例中为Steve,并添加另一个带有1的专栏。我的问题是,如果我有两个单独的语句来标记这些模式,然后我想标记满足这两个标准的值,我将如何做?我会使用addBatch方法吗?我有代码,但它不能产生预期的结果。我正在使用JavaJDBC和使用Oracle数据库的SQL库

String x = "SELECT STUDENTS.ROW, STUDENTS.MAJOR, STUDENTS.NAME " +
  "CASE WHEN prior_row.NAME IS NOT NULL" +
  "AND EXISTS(SELECT 'x' FROM STUDENTS prior_row " +
  "WHERE STUDENTS.MAJOR = prior_row.MAJOR" +
  "AND STUDENTS.ROW > prior_row.ROW + 1" +
  "SELECT STUDENTS.MAJOR, STUDENTS.ROW, STUDENTS.NAME WHERE" +
  "MAJOR < (SELECT MAJOR FROM STUDENTS WHERE MAJOR = 'MATH' 
  "AND WHERE MAJOR > (SELECT MAJOR FROM STUDENTS WHERE MAJOR = 'SCIENCE' THEN 1 ELSE NULL END Flagged_Values";

  st.addBatch(x);

String y = "SELECT STUDENTS.ROW, STUDENTS.MAJOR, STUDENTS.NAME" +
  "CASE WHEN previous.NAME IS NOT NULL" +
  "AND EXISTS(SELECT 'y' FROM STUDENTS previous" +
  "WHERE STUDENTS.MAJOR = previous.MAJOR" +
  "AND STUDENTS.ROW > previous.ROW + 1" +
  "SELECT STUDENTS.MAJOR, STUDENTS.ROW, STUDENTS.NAME WHERE" +
  "MAJOR < (SELECT THE_OUTCOME FROM STUDENTINFO WHERE MAJOR ='Math' +
  "AND WHERE MAJOR > (SELECT MAJOR FROM STUDENTS WHERE MAJOR = 'SCIENCE'" +
  "AND WHERE MAJOR > (SELECT MAJOR FROM STUDENTS WHERE MAJOR = 'Engineering'
  "THEN 1 ELSE NULL END Flag ";

  st.addBatch(y);

我试图比较连续的实例。我的第二个问题:这算是数据挖掘吗?任何帮助都将不胜感激。

addBatch仅用于DML插入、更新和删除语句。只需使用ExecuteQuery一个接一个地运行这两条语句,您使用的是哪个数据库?一匹没有名字的马,谢谢,您的答案很有用!