使用嵌套查询比简单查询增加了sql查询的语义吗

cqoc49vn  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(425)
create table students(id int,
   name varchar(20),
   dept varchar(10),
   salary int default 10000
   );

Insert into students values(1,'Ram','HR',10000);
Insert into students values(2,'Amrit','Mrkt',20000);
Insert into students values(3,'Ravi','HR',30000);
Insert into students values(4,'Raju','finance',40000);

我的导师告诉我:

select name from employee where dept in(select dept from emp group by dept having count(*)<2);

他告诉我们应该只在select语句中使用groupby中使用的那个属性,不能使用其他属性。
但以下查询也适用:

select name from employee group by dept having count(*)<2;

我的问题是对的还是错的?如果它是正确的,那么使用它作为嵌套查询比简单查询有什么好处?

2mbi3lxu

2mbi3lxu1#

如果只有一个匹配行,则可以使用:

select max(name)
from employee
group by dept
having count(*) = 1;

这个 having 子句保证一个匹配。这个 max() 返回一行中的值。
这很好,但不是很正统——它不能很好地概括。你导师建议的形式更具普遍性。它将很容易适应在有2名或7名员工的部门中寻找员工。

相关问题