日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

SQL学习笔记——Unknown column xxx in having clause

發(fā)布時(shí)間:2023/12/29 数据库 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SQL学习笔记——Unknown column xxx in having clause 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

代碼1:

select DepartmentId from Employee group by DepartmentId having Salary=max(Salary);

報(bào)錯(cuò):

Unknown column 'XXXX' in 'having clause

原因:

表根據(jù)Department將表的數(shù)進(jìn)行分組,在執(zhí)行Salary=max(Salary)這一句時(shí),max(Salary)選出每一組最大的Salary,但是等號(hào)左邊的Salary,并不知道指定的是哪一行的數(shù)據(jù),因此會(huì)報(bào)錯(cuò)。

代碼2:

select d.Name as Department,Employee.Name as Employee,Employee.Salary from Department as d,Employee where d.Id=Employee.DepartmentId and d.Id in (select Employee.DepartmentId from Employeegroup by DepartmentIdhaving Salary = max(Salary));

在執(zhí)行上面的子查詢時(shí),同樣是?Salary = max(Salary),卻可以執(zhí)行成功。是因?yàn)殡m然沒(méi)有指定,但是這里的Salary是指的外層查詢傳進(jìn)來(lái)的數(shù)據(jù)。根據(jù)SQL語(yǔ)句的執(zhí)行順序,上面的代碼,先執(zhí)行from語(yǔ)句,分別從Department表和Employee表中選出一條數(shù)據(jù),傳遞進(jìn)入子查詢中。having子句中,雖然沒(méi)有指定Salary來(lái)自哪里,這里應(yīng)該默認(rèn)是指?jìng)鬟M(jìn)來(lái)的數(shù)據(jù)。代碼改成下面的樣子應(yīng)該更好理解一點(diǎn)。

代碼3:

select d.Name as Department,e.Name as Employee,e.Salary from Department as d,Employee as ewhere d.Id=e.DepartmentId and d.Id in (select Employee.DepartmentId from Employeegroup by DepartmentIdhaving e.Salary = max(Salary));

兩者的代碼執(zhí)行結(jié)果是相同的,但代碼3更能直觀的看出,每條數(shù)據(jù)來(lái)自哪里。?

總結(jié)

以上是生活随笔為你收集整理的SQL学习笔记——Unknown column xxx in having clause的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。