gpt4 book ai didi

database - 在 mySQL 中,是否可以从两个表中选择并合并列?

转载 作者:可可西里 更新时间:2023-11-01 06:32:40 25 4
gpt4 key购买 nike

如果我在 mysql 中有两个具有相似列的表...

TABLEA
id
name
somefield1

TABLEB
id
name
somefield1
somefield2

如何构建 SELECT 语句,以便同时从两个表中进行 SELECT,并合并相同列的结果集?

例如,我希望做一些类似...

SELECT name, somefield1 FROM TABLEA, TABLEB WHERE name="mooseburgers";

...并将两个表中的 name 和 somefield1 列合并到结果集中。

谢谢您的帮助!

由于问题不明确,附加了示例输出:

我想将表 1 中的行和表 2 中的行附加到结果集中。例如,如果表包含

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) 并合并 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).

关于database - 在 mySQL 中,是否可以从两个表中选择并合并列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2913338/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com