sql union on * similiar *列值

时间:2018-05-24 16:40:34

标签: sql sqlite

在sqlite3数据库中,我有多个包含计算机名称的表。

a.name, b.name, c.hostname, d.addr_host

我需要收集子查询的所有主机名。但是,这些表共享simliar名称值,并且某些表具有例如simliar的名称。

 1. a.name = machine001
 2. b.name = machine001.domainname

是否可以使用查询创建所有主机名的单个列?

1 个答案:

答案 0 :(得分:0)

我相信你只想要:

select a.name as hostname from a
union -- intentionally eliminate duplicates
select b.name from b
union
select c.hostname from c
union
select d.addr_host from d;

如果您只希望名称达到第一个'.',那么:

select substr(a.name, 1, instr(a.name || '.', '.') - 1) as hostname from a
union -- intentionally eliminate duplicates
select substr(b.name, 1, instr(b.name || '.', '.') - 1) from b
union
select substr(c.hostname, 1, instr(a.name || '.', '.') - 1) from c
union
select substr(d.addr_host, 1, instr(d.addr_host || '.', '.') - 1) from d;