【问题标题】:Multiple SELECTS from different tables MySQL来自不同表 MySQL 的多个 SELECTS
【发布时间】:2015-05-07 18:14:55
【问题描述】:

我有两个具有以下结构的表:

Table t1
||My_id|| ||A1|| ||A2|| ||B1|| ||B2||

* 以上两列都不是唯一的

Table t2
||My_id|| ||Info||

* My_idt2

中是唯一的

我想做一个单个查询,它可以返回以下内容:

||ABUnique|| ||Info||

地点:

  • ABUnique 包含所有唯一的 A1、A2、B1 和 B2
  • Info 是来自 t2 的对应 Info 其中 t1.My_id = t2.My_id

到目前为止,我能够使用此查询获得 ABUnique

(SELECT DISTINCT `A1` AS `ABUnique` FROM `t1`)
UNION (SELECT `A2` FROM `t1`)
UNION (SELECT `B1` FROM `t1`)
UNION (SELECT `B2` FROM `t1`)
ORDER BY `ABUnique`

但我也不确定如何将 Info 放入其中。

请注意,表格有不同数量的条目。

谢谢!

【问题讨论】:

  • 你需要JOINMy_id上的表格,你不需要UNION
  • @MickMnemonic 你能说得更具体点吗?

标签: mysql database select join union


【解决方案1】:

我不是 100% 肯定这会奏效(UNION 查询有时会有点挑剔,我的大脑不会因为记住每个地方感到愤怒而烦恼)。

如果您在每个 UNIONed SELECT 的结果中包含 My_id,您应该能够将他们的结果加入到 t2 中:

SELECT abSubQ.`ABUnique`, t2.Info
FROM
((SELECT DISTINCT `A1` AS `ABUnique`, My_id FROM `t1`)
UNION (SELECT `A2`, My_id FROM `t1`)
UNION (SELECT `B1`, My_id FROM `t1`)
UNION (SELECT `B2`, My_id FROM `t1`)
) AS abSubQ
INNER JOIN t2 USING (My_id)
ORDER BY `ABUnique`
;

如果这不起作用,您应该能够在一个查询中创建并使用临时表来“INSERT INTO tmp_blahblah ... SELECT”联合,并在后续连接查询中使用临时表。

【讨论】:

  • 稍微修改了查询以使其工作,但结果不是我所期望的 - 返回的行数比我为 ABUnique 查询获得的行数少得多。所以我猜 INNER JOIN 在这里没有按预期工作。
  • 我猜这意味着并非所有在t1 中找到的My_id 值也在t2 中找到。如果是这种情况,您应该可以将INNER JOIN 更改为LEFT JOIN;它会给你所有的联合结果,如果有的话,Info
  • 或者可能是因为正如最初发布的那样,我的回答并没有像它可能的那样对事物进行别名。
  • 其实是正确的,查询中有错字。非常感谢!
猜你喜欢
  • 2013-09-22
  • 1970-01-01
  • 1970-01-01
  • 2020-12-27
  • 1970-01-01
  • 2016-12-28
  • 1970-01-01
  • 2012-12-10
  • 2015-03-30
相关资源
最近更新 更多