Sql 如何在合并两个表后消除重复项?
我是sqlplus新手。我需要消除重复项。也就是说,我不想要两个表的组合Sql 如何在合并两个表后消除重复项?,sql,database,oracle,oracle11g,sqlplus,Sql,Database,Oracle,Oracle11g,Sqlplus,我是sqlplus新手。我需要消除重复项。也就是说,我不想要两个表的组合 select CLUB.NAME as Club_NAME, CLUB.PHONE as Club_PHONE, CUSTOMER.FIRSTNAME as CUST_NAME, CUSTOMER.PHONE as CUST_PHONE, from CUSTOMER,CLUB ; 我只希望俱乐部名称有电话号码和相同的客户(名称和电话)从不同的表(俱乐部和客户)。而不是有组合 我不能使用group by
select CLUB.NAME as Club_NAME,
CLUB.PHONE as Club_PHONE,
CUSTOMER.FIRSTNAME as CUST_NAME,
CUSTOMER.PHONE as CUST_PHONE,
from CUSTOMER,CLUB ;
我只希望俱乐部名称有电话号码和相同的客户(名称和电话)从不同的表(俱乐部和客户)。而不是有组合
我不能使用group by,因为我在这里没有使用任何计算
group by Club_NAME,CUST_NAME;
(ORA-00979:非表达式分组)
请帮忙 您可以使用UNION ALL
SELECT CLUB.NAME as NAME,
CLUB.PHONE as PHONE,
'CLUB' as TYPE
FROM CLUB
UNION ALL
SELECT CUSTOMER.FIRSTNAME,
CUSTOMER.PHONE,
'CUSTOMER'
FROM CUSTOMER ;
这将为您提供所有客户和俱乐部各自的手机
我添加了一个额外的“TYPE”列,以防您想从哪个表中识别数据。如果你不需要它,你可以把它取下来
通过删除该列,还意味着如果两个表中都有相同的记录,则不会获得两次
编辑:
如果希望在不同的列中获得结果,可以对每个表执行单独的查询,也可以执行union all并返回4列,但当您引用客户时,有关俱乐部的列将为空
你可以这样做:
SELECT CLUB.NAME as CLUBNAME,
CLUB.PHONE as CLUBPHONE,
null AS CUSTOMERNAME,
null AS CUSTOMERPHONE
FROM CLUB
UNION ALL
SELECT null,
null,
CUSTOMER.FIRSTNAME,
CUSTOMER.PHONE
FROM CUSTOMER ;
看到这个了吗后面有逗号@RajathAradhya;您的客户会将您引导到错误消息中出现问题的那一行和那一列。我重新阅读了这个问题,我不确定他是指那种重复的问题。他不想要密码。但你是对的,如果有客户和俱乐部的名字和电话号码相同,他们会被退回@拉贾塔拉迪亚。就像现在对你有用一样?
从c中选择a、b
是无效语法@Rajath;将其更改为从c中选择a、b
。“少了一个逗号。”菲利佩·席尔瓦你明白我的问题,但我在你的回答中犯了错误code@filipe席尔瓦:不,不是。