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

根据另一个表中的信息从表中选择行的SQL语句,sql,Sql,我在一个数据库中有两个不同的表,列数不同。现在,我想从依赖于某个变量的第一个表中选择若干行(例如,第一列的值应为1)。但是,我还希望使用其他表中的信息从第一个表中选择行 在我的具体案例中,table1和table2都包含Group和Person列。表1指定每个人一次,并声明他或她所属的组。但是,人们也可以是次要群体的一部分,这些群体在表2中列出。也就是说,在表2中,可以使用新的组号再次列出一个人 我想写一个SQL语句,在这里我从表1中选择属于某个组x成员的人员(即行)(因为我有关于此表中人员的更

我在一个数据库中有两个不同的表,列数不同。现在,我想从依赖于某个变量的第一个表中选择若干行(例如,第一列的值应为1)。但是,我还希望使用其他表中的信息从第一个表中选择行

在我的具体案例中,
table1
table2
都包含
Group
Person
列。表1指定每个人一次,并声明他或她所属的组。但是,人们也可以是次要群体的一部分,这些群体在
表2中列出。也就是说,在
表2中,可以使用新的组号再次列出一个人

我想写一个SQL语句,在这里我从
表1
中选择属于某个组
x
成员的人员(即行)(因为我有关于此表中人员的更多信息)。然而,由于一个人可以属于多个组,因此我还需要以某种方式查看
表2

如何编写此SQL语句

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
不管他们属于哪一张桌子

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

这将给你一张桌子

person group
person1 group1
person1 group2
person2 group3
不管他们属于哪一张桌子


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

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

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

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

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

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

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')

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

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')

听起来您需要重构架构。@RoryMcCrossan我非常愿意,但我使用的数据库正由另一个我不管理的程序使用,因此我可以不做任何更改:(听起来你需要重构你的模式。@RoryMcCrossan我非常愿意,但我正在处理一个数据库,该数据库正被另一个我不管理的程序使用,因此我可以不做任何更改:(我需要来自
表1
(例如人员性别和出生日期,未包含在
表2
中),因此我猜此解决方案不起作用。我需要
表1
中的数据(例如人员性别和出生日期,未包含在
表2
中),因此我猜此解决方案不起作用。