【问题标题】:Search a table with the result of another search in servlet用 servlet 中另一个搜索的结果搜索表
【发布时间】:2015-05-29 23:43:10
【问题描述】:

我有一个表 TABLE1 有 2 个字段 idshift 和另一个表 TABLE2 有 3 个字段 id、姓名。字段 id 与两个表中的主键相同。
在我的 servlet 中,我想选择所有具有 shift != noon 的 id。所以我写了

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

所以我已经收集了 rs 中的所有记录。现在,如何搜索第二个表以选择具有我在第一次查找中找到的 id 的记录?

【问题讨论】:

    标签: java sqlite servlets


    【解决方案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' 内,最好使用 &lt;&gt; 而不是 != 作为其标准 SQL,并且与其他数据库更兼容。

    【讨论】:

      【解决方案2】:

      试试这个...

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

      【讨论】:

        【解决方案3】:
        ResultSet rs = stmt.executeQuery
            ("SELECT * FROM Table2 WHERE id in
                (SELECT id from Table1 WHERE shifts NOT LIKE 'NOON')");
        

        【讨论】:

          【解决方案4】:

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

          Join 操作会导致 SQL Server 的工作速度比标准的单表选择慢,但如果第一条语句的 id 很多,第二条可能需要更多时间。

          【讨论】:

            猜你喜欢
            • 2016-05-12
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-11-16
            • 2021-11-09
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多