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;
我的问题是对的还是错的?如果它是正确的,那么使用它作为嵌套查询比简单查询有什么好处?
1条答案
按热度按时间2mbi3lxu1#
如果只有一个匹配行,则可以使用:
这个
having
子句保证一个匹配。这个max()
返回一行中的值。这很好,但不是很正统——它不能很好地概括。你导师建议的形式更具普遍性。它将很容易适应在有2名或7名员工的部门中寻找员工。