Postgresql如何从一个表中选择仅在另一个表中可用的列中的值?

时间:2013-06-07 20:38:35

标签: postgresql

我正在使用Postgresql,需要查询两个表:

表1

  ID     Bill  
  A       1
  B       2
  B       3
  C       4

表2

 ID  
  A     
  B

我想要一个包含Table1中所有列的表,但只保留表2中可用ID的记录(在本例中为A和B)。此外,Table2的ID是唯一的。

  ID     Bill  
  A       1
  B       2
  B       3

我应该使用哪种连接,或者我可以使用WHERE语句?

谢谢!

2 个答案:

答案 0 :(得分:4)

SELECT Table1.*
FROM Table1
  INNER JOIN Table2 USING (ID); 

SELECT * 
FROM Table1
WHERE ID IN (SELECT ID FROM Table2);

但第一个因性能原因更好。

答案 1 :(得分:0)

SELECT * 
FROM Table1
WHERE EXISTS (
   SELECT 1 FROM Table2 WHERE Table2.ID = Table1.ID LIMIT 1
)