SQL 查询:如何 select 单个项目的多个实例而不折叠成一个组?

SQL Query: How to select multiple instances of a single item without collapsing into a group?

我正在尝试使用 Impala 中的 SQL 查询进行跟踪。我有一个数据 table,它有(除其他外)两列,其值相交多次。例如,假设我们有一个 table,其中有两列用于相关名称和 phone 数字:

Names Phone Numbers John Smith (123) 456-7890 Rob Johnson (123) 456-7890 Greg Jackson (123) 456-7890 Tom Green (123) 456-7890 Jack Mathis (123) 456-7890 John Smith (234) 567-8901 Rob Johnson (234) 567-8901 Joe Wolf (234) 567-8901 Mike Thomas (234) 567-8901 Jim Moore (234) 567-8901 John Smith (345) 678-9012 Rob Johnson (345) 678-9012 Toby Ellis (345) 678-9012 Sam Wharton (345) 678-9012 Bob Thompson (345) 678-9012 John Smith (456) 789-0123 Rob Johnson (456) 789-0123 Kelly Howe (456) 789-0123 Hank Rehms (456) 789-0123 Jim Fellows (456) 789-0123

我需要从这个 table 中得到的是从 Name 列中选择的每个项目,这些项目有来自 Phone Numbers 列的多个条目与之关联,如下所示:

Names Phone Numbers John Smith (123) 456-7890 John Smith (234) 567-8901 John Smith (345) 678-9012 John Smith (456) 789-0123 Rob Johnson (123) 456-7890 Rob Johnson (234) 567-8901 Rob Johnson (345) 678-9012 Rob Johnson (456) 789-0123

这是我目前得到的查询,但它并没有给我想要的结果:

SELECT a.name, a.phone_number, b.phone_number, b.count1

FROM databasename a

INNER JOIN (

  SELECT phone_number, COUNT(phone_number) as count1

  FROM databasename

  GROUP BY phone_number

  ) b

ON a.phone_number = b.phone_number;

关于如何改进我的查询以获得我正在寻找的结果的任何想法?

谢谢。

一种方法是使用exists:

select t.*
from tablename t
where exists (select 1 from tablename t2 where t2.name = t.name and t2.phonenumber <> t.phonenumber)
SELECT DISTINCT x.* 
           FROM my_table x 
           JOIN my_table y 
             ON y.name = x.name 
            AND y.phone <> x.phone;

正在处理您的查询...

这会根据拥有超过 1 个 phone 号码的用户的姓名生成一个子集,然后根据名称返回整个集合,为拥有超过 1 个 [=] 的用户返回所有 phone 个号码15=] 数。但是,如果用户多次列出相同的 phone 号码,它将被退回。要在需要时消除这些,请在内联视图中向计数添加不同。

SELECT a.name, a.phone_number
FROM databasename a
INNER JOIN (
  SELECT name, COUNT(phone_number) as count1
  FROM databasename
  GROUP BY name
  having  COUNT(phone_number) > 1
  ) b
on a.name = b.name
Order by a.name, a.phone_Number