编写SQL查询而不计数

时间:2017-08-22 15:46:25

标签: sql count

任何人都可以帮助我如何在不使用count的情况下编写此查询? "一些导演导演不止一部电影。对于所有此类导演,请返回他们指导的所有电影的标题以及导演姓名。按导演名称排序,然后按电影标题排序。(不含COUNT。)

mID | title                  | director
--------------------------------------
101 |Gone with the Wind      |Victor Fleming
102 |Star Wars               |George Lucas
103 |The Sound of Music      |Robert Wise  
104 |E.T.                    |Steven Spielberg
105 |Titanic                 |James Cameron
106 |Snow White              |<null>
107 |Avatar                  |James Cameron
108 |Raiders of the Lost Ark |Steven Spielberg

3 个答案:

答案 0 :(得分:3)

您可以比较每个导演中间的最小值和最大值。 如果它们不同 - 超过1个。

Select mid, title, director
From tbl 
where director in (Select director
                                 From tbl
                                 Group by director
                                 Having max(mid) > min (mid))
order by director, title

答案 1 :(得分:1)

您可以使用var obj = { foo: 29, bar: 42 }; var arr = Array.from(Object.keys(obj), k=>obj[k]); 和CTE或子查询。不使用ROW_NUMBER()是非常愚蠢的。这是这种聚合的理想情况。

COUNT()

答案 2 :(得分:1)

这个怎么样?

select t.*
from t join
     (select director, sum(1) as cnt
      from t
      group by director
     ) d
     on t.director = d.director
where cnt > 1
order by director, title;