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

时间:2013-04-25 21:44:20

标签: sql postgresql

当特定列的值与tableX中相应列的值匹配时,我试图显示多列tableY数据。

想象一下,我们有两个表:一个名为person,其中包含一个名为membershipid的列,另一个名为tasks,其中包含一个名为memberid的列。在这种情况下,显示记录的条件如下:

membershipid上的person = memberid上的tasks

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

谢谢你看看。

3 个答案:

答案 0 :(得分:2)

根据我对您的问题的理解,听起来似乎是,您需要INNER JOIN仅从tableX中提取已加入列中匹配值的行tableY SELECT tableXcol1, tableXcol2, tableXcol3 FROM tableX INNER JOIN tableY ON tableX.specific_column = tableY.specific_column

类似于:

{{1}}

答案 1 :(得分:1)

虽然可以使用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

答案 2 :(得分:1)

如果您只需要来自表格而不是来自tableT的数据,那么执行JOIN可能会为您提供重复数据。请改用EXISTS,例如

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