Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从SQL中的两个表中获取匹配行,而无需重复调用java_Java_Sql_Sql Server 2008 - Fatal编程技术网

如何从SQL中的两个表中获取匹配行,而无需重复调用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

我必须从一个表(比如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.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”。是否可以更新这个新创建的表并让它更新实际表?