我有一个表 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的记录?
答案 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,第二个可能需要更多时间。