-1

我是 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 ;

我只想要来自不同表(俱乐部和客户)的客户(姓名和电话)的电话号码和相同的俱乐部名称。而不是组合。

我不能使用 group by 因为我在这里没有使用任何计算

group by Club_NAME,CUST_NAME;

(ORA-00979:不是 GROUP BY 表达式)。

请帮忙。

4

1 回答 1

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”列,以防您想从数据来自哪个表中识别。如果你不需要它,你可以删除它。

通过删除该列,这也意味着如果您在两个表中都有相同的记录,您将不会获得两次。

编辑:

如果你想得到不同列的结果,你可以对每个表做单独的查询,或者你可以做一个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 ;

看到这个小提琴

于 2013-07-31T22:22:50.030 回答