在 mySQL 中,是不是可以从两个表中选择并合并列?
Posted
技术标签:
【中文标题】在 mySQL 中,是不是可以从两个表中选择并合并列?【英文标题】:In mySQL, Is it possible to SELECT from two tables and merge the columns?在 mySQL 中,是否可以从两个表中选择并合并列? 【发布时间】:2010-05-26 13:25:38 【问题描述】:如果我在 mysql 中有两个具有相似列的表...
TABLEA
id
name
somefield1
TABLEB
id
name
somefield1
somefield2
如何构造一个 SELECT 语句,以便我可以同时从两个表中选择,并为相同的列合并结果集?
例如,我希望做类似...
SELECT name, somefield1 FROM TABLEA, TABLEB WHERE name="mooseburgers";
...并在结果集中将两个表中的名称和 somefield1 列合并在一起。
感谢您的帮助!
由于问题不清楚而附加了示例输出:
我希望将 table1 中的行和 table2 中的行附加到结果集中。例如,如果表包含
TABLEA
id(1) name(zoot) somefield(suit)
TABLEB
id(1) name(zoot) somefield(flute)
The resultet would look like:
name | somefield1
zoot suit
zoot flute
【问题讨论】:
“合并”是什么意思?请提供示例输出。 【参考方案1】:您可以使用 (id,name) 作为连接条件来组合两个表中的列:
select
a.id as id,
a.name as name,
a.somefield1 || ' ' || b.somefied1 as somefield1
from tablea a, tableb b
where a.id = b.id
and a.name = b.name
and b.name = 'mooseburgers';
如果您只想加入 (id) 并结合 name 和 somefield1 列:
select
a.id as id,
a.name || ' ' || b.name as name,
a.somefield1 || ' ' || b.somefied1 as somefield1
from tablea a, tableb b
where a.id = b.id
and b.name = 'mooseburgers';
虽然我不得不承认这是一种相当不寻常的做事方式。不过我想你有你的理由:-)
如果我误解了您的问题,而您只是想要两个表的更传统的联合,请使用类似:
select id, name, somefield1, '' as somefield2 from tablea where name = 'mooseburgers'
union all
select id, name, somefield1, somefield2 from tableb where name = 'mooseburgers'
这不会合并 行,而是只会追加来自两个查询的行。如果您想删除重复行,请单独使用 union
,但如果您确定没有重复行或不想删除它们,union all
通常更有效。
根据您的编辑,实际查询将是:
select name, somefield1 from tablea where name = 'zoot'
union all
select name, somefield1 from tableb where name = 'zoot'
(或union
,如果您不想在a.name==b.name=='zoot'
和a.somefield1==b.somefield1
的位置重复)。
【讨论】:
谢谢。抱歉,如果我的问题不清楚。是的,我只想附加两个表中的行。并确保 Table1 中的 somefield1 列和 Table2 中的 somefield1 都出现在结果集中的单列 somefield 1 下。【参考方案2】:我不确定你所说的合并是什么意思,但你可以UNION
结果:
SELECT id, name, somefield1 FROM TABLEA WHERE name="mooseburgers"
union all
SELECT id, name, somefield1 FROM TABLEB WHERE name="mooseburgers";
【讨论】:
【参考方案3】:根据您所说的合并,这里有一个可能的解决方案。
Select id,name,somefield1 from TableA
WHERE Name ='mooseburgers'
UNION
Select id,name,somefield1 from TableB
WHERE Name ='mooseburgers'
将允许您显示两个表的结果,并将结果合并到一个表中。
【讨论】:
【参考方案4】:你也许是说
SELECT tableA.id, tableA.name, tableA.somefield1
FROM tableA, tableB
WHERE tableA.name = tableB.name AND tableA.name="mooseburgers"
【讨论】:
以上是关于在 mySQL 中,是不是可以从两个表中选择并合并列?的主要内容,如果未能解决你的问题,请参考以下文章
即使不是一个表中的所有行在另一个表中都有核心响应者,如何从 MySQL 中的两个表中进行选择?