如何从SQL中的两个表中获取匹配行,而无需重复调用java
我必须从一个表(比如a)中读取一组行,每个行包含一个唯一的id(比如id_值) 现在使用这个id_值,我必须从另一个表(比如B)中获取行 我正在使用java,因此我的代码是:如何从SQL中的两个表中获取匹配行,而无需重复调用java,java,sql,sql-server-2008,Java,Sql,Sql Server 2008,我必须从一个表(比如a)中读取一组行,每个行包含一个唯一的id(比如id_值) 现在使用这个id_值,我必须从另一个表(比如B)中获取行 我正在使用java,因此我的代码是: ResultSet rs= [ Code to get rows from table A ] ; while(rs.next()) { ResultSet rs2= [Code to get rows from table B using the id_value from table A using rs.getSt
ResultSet rs= [ Code to get rows from table A ] ;
while(rs.next())
{
ResultSet rs2= [Code to get rows from table B using the id_value from table A using rs.getString("id_value");];
}
上面的查询当然很慢,因为表a中的行数一次可以超过500行
是否有人知道此问题的更快更好的解决方案,或者如何在单个查询中执行此操作???您可以使用左连接:
SELECT table1.*, table2.* from table1
LEFT JOIN table2 ON table2.id = table1.table2id
WHERE table1.ID = 123;
您应该阅读SQL中的联接:) 您希望按照以下思路做一些事情:
SELECT a.value_1, a.value_2, b.value_1, b.value_2
FROM table_a AS a
LEFT JOIN table_b AS b
ON a.id_value = b.table_a_id
WHERE a.value_1 = "something"
但是,如果您有实际的查询,就更容易帮助您。不喜欢较旧的
TableA,TableB
join语法。只是有些事情你不能用它来做,而你可以用显式的ansi-92连接来做,对于有多个表的复杂查询,它的可读性要差得多。但是如何从结果集中读取数据呢??由于我正在运行的内部查询来自不同的表,并且表a中的每一行在表B中有一个或多个数据,如何从每个唯一id_值的结果集中读取数据???@Lokesh,完全相同的方式,只是现在两个表中的数据都关联到一行,您将以usualThanks Joel的形式迭代这组行。我现在正在使用一个左外联接,它确实解决了问题。@Joel-我看到了修订,它让我感到困惑?你的列列表有*.table1,*.table2,这只是向后的,不起作用。表1和表2也可能各自有自己的id列—表中的外键列不可能仅命名为“id”。是否可以更新这个新创建的表并让它更新实际表?