【问题标题】:MYSQL - Concatenate two tablesMYSQL - 连接两个表
【发布时间】:2011-04-27 19:32:31
【问题描述】:

我有两张表如下:

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

我想列出参加活动 17 的每个人的姓名,包括学生和教师。有没有我可以得到如下结果:

 id  | actid
 98     17
 5      17

不创建新表(仅使用表达式嵌套或派生关系)?

在 actid 上的 JOIN 会给出如下内容:

StuID  | FacID  | actid
 5        98        17

我想我需要一种连接形式??

【问题讨论】:

  • 这种形式的连接在 SQL 中称为 UNION,Thilo 有正确的答案,如下所示(您应该接受该答案,这样 Thilo 才能获得荣誉)。

标签: sql mysql concatenation


【解决方案1】:
select * from table_a where actid = 17
union all
select * from table_b where actid = 17

您可能(或可能不需要)对不唯一的 id 做一些事情,例如

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

【讨论】:

  • 我必须将每个 SELECT 都包含在 () 中才能让 MySQL 满意。
【解决方案2】:

你想要 UNION ALL:

(SELECT * FROM tablea) UNION ALL (SELECT * FROM tableb)

我认为这些括号是正确的。我记得 MySQL 对此很挑剔。

【讨论】:

  • 括号不应该是必需的,至少,我相信规范也不需要它
【解决方案3】:

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

【讨论】:

  • join 是连接列,这个问题是关于连接行
【解决方案4】:

您可以使用selectfromwhere 连接这两个表。

【讨论】:

  • 请更具体一点。 SELECT FROM 和 WHERE 过于笼统,无法标记为有用的答案。
猜你喜欢
  • 2011-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-07
  • 1970-01-01
  • 1970-01-01
  • 2011-04-01
  • 2014-11-07
相关资源
最近更新 更多