2015-05-29 58 views
0

我有一个表TABLE1有2场ID转变和另一个表TABLE2有3场ID的结果,。字段ID与两个表中的主键相同。
在我的servlet中,我想选择所有有shift!= noon的id。所以我写搜索一个表,在Servlet中的另一个搜索

ResultSet rs = stmt.executeQuery("SELECT id FROM TABLE1 WHERE shifts!=NOON"); 

所以我要收集所有记录RS。现在,我如何通过第二张表来搜索,以选择第一次看到的带有id的记录?

回答

1

你需要一个连接:这里

ResultSet rs = stmt.executeQuery("SELECT t2.* 
            FROM TABLE1 as t1 
            JOIN TABLE2 as t2 
            ON t1.id = t2.id 
            WHERE t1.shifts <> 'NOON'"); 

看:

http://www.w3schools.com/sql/sql_join.asp

还需要附上串像内单NOON引用'NOON',并且最好使用<>而不是!=作为其标准SQL和更多与其他数据库兼容。

1

尝试......

ResultSet rs = stmt.executeQuery("SELECT ID, Name 
            FROM Table1 
            INNER JOIN Table2 
            ON Table1.ID=Table2.ID 
            WHERE shifts!='NOON' "); 
1
ResultSet rs = stmt.executeQuery 
    ("SELECT * FROM Table2 WHERE id in 
     (SELECT id from Table1 WHERE shifts NOT LIKE 'NOON')"); 
0

使用的SQL语句连接操作就像在其他的答案, 或者干脆从第一查询添加每发现ID一些ArrayList和然后循环在ArrayList中的每个ID,并第二次“SELECT * ......” statment 。

加入操作会导致SQL Server的运行速度比标准的一个表选择速度慢,但如果第一条语句中有很多标识,则第二条标记可能需要更多时间。