作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
如果我在 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/
我是 sql 的新手,我从未在 mysql 中使用过变量或条件,但从其他编程语言中知道这一点。几天以来,我试图找到一种对用户分数进行排名的方法。我阅读了很多文章,也阅读了 stackoverflow
我是一名优秀的程序员,十分优秀!