2010-10-20 253 views
2

我有两个表如下:MYSQL - 连接两个表

TABLE A     TABLE B 
StuID | actid    FacID | actid 
    3  12     98  17 
    5  17     54  21 

我想列出每个人的名字,学生和教师,谁参加活动的17有反正我能得到一个结果如下:

id | actid 
98  17 
5  17 

没有创建一个新表(只使用嵌套的表达式或派生关系)?

A JOIN在ACTID会看到这样的:

StuID | FacID | actid 
5  98  17 

我想我需要拼接的形式?

+1

这种形式串接方法称为SQL联合,并蒂洛具有正确的答案,下面(你应该接受这个答案,以便Thilo获得信用)。 – 2010-10-20 01:59:02

回答

14
select * from table_a where actid = 17 
union all 
select * from table_b where actid = 17 

你可能(或可能不)需要使用selectfromwhere做一些事情不是唯一的ID,如

select 'Student', table_a.* from table_a where actid = 17 
union all 
select 'Faculty', table_b.* from table_b where actid = 17 
+0

我不得不将每个SELECT都包装在()中以使MySQL很高兴。 – 2010-10-20 02:01:36

0

你想UNION ALL:

(SELECT * FROM表A)UNION ALL(SELECT * FROM表B)

我认为这些parenthese是正确的。我记得MySQL对此很烦恼。

-2

您可以连接这两个表。

+0

请更具体一点。 SELECT FROM和WHERE太泛化,不能标记为有用的答案。 – 2017-10-30 00:28:52

0

它太容易 select tableA.stuId,tableA.actId, tableB.facId,tableB.actId 从表A,tableB的 其中tableA.actid = tableB.actid;`