如何从SQL中的两个表中获取匹配的行,而无需重复调用java

时间:2011-03-05 04:48:37

标签: java sql sql-server-2008

我必须从表中读取一组行(比如说A),每行包含一个唯一的id(比如id_value)。

现在使用这个id_value我必须从另一个表中获取行(比如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个。

是否有人知道更好,更快的解决此问题或如何在单个查询中执行此操作?

2 个答案:

答案 0 :(得分:3)

您应该阅读SQL中的联接:http://en.wikipedia.org/wiki/Join_(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"

但是,如果您有实际查询,那么帮助您会更容易。

答案 1 :(得分:1)

您可以使用左连接:

  SELECT table1.*, table2.* from table1
  LEFT JOIN table2 ON table2.id = table1.table2id
  WHERE table1.ID = 123;