在讲SQL的数据分组的视频中老师明显有个地方讲的有问题,从10分19秒开始这段时间里说的有问题,或者说是不严谨?因为在sql中select中没有出现的聚合函数或者字段其实可以在group by中出现,也就是说having中可以出现select中没有的字段或者函数,只要你的group by 语句中有就行了。而老师貌似没有提到这一点(可能我看的不认真,老师说了我没听到?)。。。。
所以老师说having不能代替where我觉着如果你刻意去用having的话,某种程度上可以代替where
比如我的表有这样的结构:- CREATE TABLE [dbo].[Student](
- [StudentID] [int] IDENTITY(1,1) NOT NULL,
- [StudentName] [varchar](50) NOT NULL,
- [Password] [varchar](20) NOT NULL,
- [StudentSex] [varchar](2) NOT NULL,
- [StudentAge] [int] NOT NULL,
- [Telephone] [varchar](20) NULL,
- [Other] [nvarchar](50) NULL,
复制代码 当我想找出studentage>10的studentname时一般写法是:
select studentname from student where studentage>10
如果我想用having来写的话可以这样写:
select studentname from student group by studentname,studentage having studentage>10
这种程度上的where的功能用having是可以代替的。 注:当having后面需要多条件时用and连接即可。
我这人比较喜欢较真儿,所以听到老师说的这么绝对的时候我就会有所怀疑,然后去琢磨,并没有对老师的不敬哈{:soso_e113:}
同时还欢迎广大同学对我各种拍砖啊~~俗话说,实践出真知嘛。在没有举例说明问题的时候我觉着不能盲目的相信一切啊。
|