我是sqlplus的新手。我需要摆脱重复。也就是说,我不想要2个表的组合。
select CLUB.NAME as Club_NAME,
CLUB.PHONE as Club_PHONE,
CUSTOMER.FIRSTNAME as CUST_NAME,
CUSTOMER.PHONE as CUST_PHONE,
from CUSTOMER,CLUB ;
我只是希望俱乐部的名字与那里的电话号码相同,而且客户(姓名和电话)来自不同的桌子(CLUB和客户)。并且没有组合。
我不能使用group by,因为我没有在这里使用任何计算
group by Club_NAME,CUST_NAME;
(ORA-00979:不是GROUP BY表达式)。
请帮忙。
答案 0 :(得分:1)
您可以使用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”列,以防您想从数据表中识别数据。如果您不需要它,您可以将其删除。
通过删除该列,这也意味着如果两个表中都有相同的记录,则不会两次。
编辑:
如果你想在不同的列中获得结果,你可以为每个表做单独的查询,或者你可以进行全部联合,并返回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 ;
请参阅此fiddle