在servlet

时间:2015-05-29 15:20:04

标签: java sqlite servlets

我有一个表 TABLE1 ,包含2个字段 id shift ,另一个表 TABLE2 包含3个字段< strong> id ,名称姓氏。字段ID与两个表中的主键相同。
在我的servlet中,我想选择所有有移位的id!=中午。所以我写了

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

所以我收集了 rs 中的所有记录。现在,我如何搜索第二个表格以选择第一眼中找到的id为i的记录?

4 个答案:

答案 0 :(得分:1)

试试这个......

ResultSet rs = stmt.executeQuery("SELECT ID, Name 
                                  FROM Table1
                                  INNER JOIN Table2
                                  ON Table1.ID=Table2.ID
                                  WHERE shifts!='NOON' ");

答案 1 :(得分: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,并且与其他数据库更兼容。

答案 2 :(得分:1)

ResultSet rs = stmt.executeQuery
    ("SELECT * FROM Table2 WHERE id in
        (SELECT id from Table1 WHERE shifts NOT LIKE 'NOON')");

答案 3 :(得分:0)

在SQL语句中使用连接运算符,就像在其他答案中一样, 或者只是将第一个查询中的每个找到的id添加到某个ArrayList中,然后循环遍历ArrayList中的每个id,并生成第二个“SELECT * ...”语句。

加入操作会导致SQL服务器比标准的一个表选择慢,但如果第一个语句中有很多id,第二个可能需要更多时间。