数据库 – 在mySQL中,是否可以从两个表中进行SELECT并合并列?

前端之家收集整理的这篇文章主要介绍了数据库 – 在mySQL中,是否可以从两个表中进行SELECT并合并列?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如果我在 mysql中有两个具有相似列的表…
TABLEA
  id
  name
  somefield1

TABLEB 
  id
  name
  somefield1
  somefield2

如何构造SELECT语句,以便我可以同时从两个表中进行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

解决方法

您可以使用(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)并组合名称和somefield1列:

select
    a.id                               as id,a.name || ' ' || b.name            as name,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,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'

(或者如果你不想要重复,其中a.name == b.name ==’zoot’和a.somefield1 == b.somefield1).

猜你在找的MsSQL相关文章