SQL: Select rows with a column value that occurs at least N times?

前端 未结 3 1000
情深已故
情深已故 2020-12-04 22:27

Suppose I have a SQL table \"Celebrities\" with two columns: \"fname\" and \"lname\":

fname    | lname    
---------+-------  
Bill     | Clinton
Bill     |          


        
相关标签:
3条回答
  • 2020-12-04 22:53
    select fname, lname
    from 
      (
        select fname, lname, count(*) over(partition by lname) as lcount
        from Celebrities
      ) as S
    where lcount > 1
    

    Tested in SQL Server 2008. Might work in other DBMS that support count(*) over(...)

    0 讨论(0)
  • 2020-12-04 22:54

    Using a JOIN:

    SELECT a.*
      FROM CELEBRITIES a
      JOIN (SELECT c.lname
              FROM CELEBRITIES c
          GROUP BY c.lname
            HAVING COUNT(*) >= 2) b ON b.lname = a.lname
    

    Using EXISTS:

    SELECT a.*
      FROM CELEBRITIES a
     WHERE EXISTS (SELECT NULL
                     FROM CELEBRITIES c
                    WHERE c.lname = a.lname
                 GROUP BY c.lname
                   HAVING COUNT(*) >= 2) 
    
    0 讨论(0)
  • 2020-12-04 23:11
    SELECT fname, lname FROM Celebrities 
    WHERE lname IN 
     (SELECT lname FROM Celebrities 
      GROUP BY lname HAVING COUNT (lname) >1)
    
    0 讨论(0)
提交回复
热议问题