我的表格结构如下:
Computer:
id serial,
sbeadminlogin text,
sbeadminfirstname text,
sbeadminlastname text
Server:
id serial,
sbeadminlogin text,
sapadminfirstname text,
sapadminlastname text
这些表之间没有任何关系,但它们的列sbeadminlogin
在两者中都命名相同。 Server
表中管理员的人员也可能是存储在computer
表中的其他设备的管理员。
我想在一个查询中从这些表创建所有管理员列表(仅限唯一行)。为了做到这一点,我使用了:
(select distinct sbeadminlogin from computer)
union
(select distinct sbeadminlogin from server)
直到我想添加名称和姓氏才能在结果中显示,直到我的效果很好:
(select distinct sbeadminlogin, sbeadminfirstname || ' ' || sbeadminlastname from computer)
union
(select distinct sbeadminlogin, saeadminfirstname || ' ' || saeadminlastname from server)
我收到错误消息,指出列saeadminfirstname
不存在。
任何人都可以给我一个如何准备声明的提示,以便我从两个表中获得唯一的登录,第一个和最后一个名字吗?
答案 0 :(得分:1)
我相信如果您放置正确的列名(带别名或不带别名),它将起作用:
(select sbeadminlogin, sbeadminfirstname || ' ' || sbeadminlastname as adminname from computer)
union
(select sbeadminlogin, sapadminfirstname || ' ' || sapadminlastname as adminname from server)
示例:SQLFiddle
答案 1 :(得分:0)
我认为你应该使用+''+连接两列而不是||。
离。
(从temp1中选择不同的名称+''+ city +''+ lastname) 联盟 (从temp2中选择不同的名称+''+ city +''+ lastname)
答案 2 :(得分:0)
尝试此查询并进行检查:
(select distinct sbeadminlogin, sbeadminfirstname || ' ' || sbeadminlastname
from computer)
union
(select distinct sbeadminlogin, sapadminfirstname || ' ' || sapadminlastname
from server)