SQL语句根据另一个表中的信息从表中选择行

时间:2012-10-24 07:31:22

标签: sql

我在数据库中有两个不同的表,列数不同。现在,我想从第一个表中选择一些行,这取决于某个变量(例如,第一列应该具有值1)。但是,我还想使用其他表中的信息从我的第一个表中选择行。

在我的具体情况中,table1table2都包含GroupPerson列。表1指定每个人一次,并声明他或她属于哪个组。但是,人们也可以成为辅助组的一部分,这些组列在table2中。也就是说,在table2中,可以使用新的组号再次列出一个人。

我想编写一个SQL语句,我从table1中选择人员(即行)(因为我有关于此表中人员的更多信息)是某个组的成员,{{ 1}}。但是,由于一个人可以属于多个群体,我还需要以某种方式查看x

如何编写此SQL语句?

3 个答案:

答案 0 :(得分:1)

select t1.person_id,t1.group_id 
from table1
union all
select t2.person_id,t2.group_id
from table2

这会给你一张表

person group
person1 group1
person1 group2
person2 group3

无论他们属于哪个表。

但是,如果两个表中都有相同的数据,那么这种架构似乎很愚蠢。

答案 1 :(得分:0)

两个表中都需要某种标识符 - 比如候选键。 当您进行选择时,您需要加入表格,例如:

SELECT column_name(s)
FROM Table1 table_name1
INNER JOIN Table2 table_name2
ON table_name1.column_name=table_name2.column_name
WHERE table_name1.person = table_name2.person

答案 2 :(得分:0)

如果我已正确理解您的问题,下面的查询将为您提供一个人的详细信息,其中该人是“X”组的成员,并且该人与该特定组“X”之间的关系来自维护的记录在table1table2

SELECT t1.*
FROM table1 t1 
LEFT OUTER JOIN table2 t2
    ON t1.Person = t2.Person
WHERE t1.Person = 'Y'
AND (t1.Group = 'X' OR t2.Group = 'X')