基于多个表和列的SQL条件数据显示
问题描述:
当特定列的值与tableY
中相应列的值匹配时,我试图显示tableX
数据的几列。基于多个表和列的SQL条件数据显示
假设我们有2个表:一个名为person
包含一个名为membershipid
列,另一个叫tasks
包含名为memberid
列。在这种情况下,显示该条件的记录将是如下:关于person
= memberid
membershipid
上tasks
这是否需要使用JOIN子句的或我仍然可以使用WHERE关键字的呢?
感谢您的关注。
答
从我对你的问题的理解中,听起来像是的,你需要一个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
)
您正在使用哪些DBMS? Postgres的?甲骨文? – 2013-04-25 21:52:33
我正在使用Postgres进行此设置。 – speshock 2013-04-25 21:53:54
@speshock下面的答案有助于回答你的问题吗? – 2013-06-05 14:43:19