基于多个表和列的SQL条件数据显示

基于多个表和列的SQL条件数据显示

问题描述:

当特定列的值与tableY中相应列的值匹配时,我试图显示tableX数据的几列。基于多个表和列的SQL条件数据显示

假设我们有2个表:一个名为person包含一个名为membershipid列,另一个叫tasks包含名为memberid列。在这种情况下,显示该条件的记录将是如下:关于person = memberid

membershipidtasks

这是否需要使用JOIN子句的或我仍然可以使用WHERE关键字的呢?

感谢您的关注。

+0

您正在使用哪些DBMS? Postgres的?甲骨文? – 2013-04-25 21:52:33

+0

我正在使用Postgres进行此设置。 – speshock 2013-04-25 21:53:54

+0

@speshock下面的答案有助于回答你的问题吗? – 2013-06-05 14:43:19

从我对你的问题的理解中,听起来像是的,你需要一个INNER JOIN才能从tableX中抽出行,其中在tableY的加入列中有一个匹配值。

因此,像:

SELECT tableXcol1, tableXcol2, tableXcol3 
FROM tableX 
INNER JOIN tableY 
ON tableX.specific_column = tableY.specific_column 

尽管它可以与where条款来完成,我会建议你使用连接。

where风格(不推荐)

select t1.field1, t1.field2, ... 
from aTable as t1, anotherTable as t2 
where t1.field1 = t2.field1; 

join风格(推荐)

select t1.field1, t1.field2, ... 
from aTable as t1 inner join anotherTable as t2 on t1.field1 = t2.field1 

如果你只需要从TableX的而不是从tableY数据,做一个JOIN可能会给你重复的数据。改为使用EXISTS,例如

SELECT person.col1, person.col2 
FROM person 
WHERE 
    EXISTS (
     SELECT 1 
     FROM tasks 
     WHERE 
      person.membershipid = tasks.memberid 
    )